首页 > 代码库 > Python3 学习第十二弹: 补充something
Python3 学习第十二弹: 补充something
python中遇到 *keys, **keys的形式
其实 * 代表传递任意个无名字参数,这些参数通过Tuple访问 >>> def sum(*keys): ret= 0 for i in keys: ret += i return ret >>> sum(1,2,3,4,5) 15 ** 代表传递人一个有名字参数,这些参数通过dict访问 >>> def sum(**keys): ret= 0 for i,j in keys.items(): ret += j return ret >>> sum(a=1,b=2) 3
一些特殊函数
pass 程序什么都不用做 用的地方不多,比如 if age < 10: print(‘children‘) elif age < 20: pass elif age < 30: print(‘adult‘)del python一般会删除那些不用的对象 比如列表与字典中删除时 此外,del会删除该值的引用 >>> a = 1 >>> b = a >>> del a >>> b 1 >>> a NameError: name ‘a‘ is not defined 要注意的是,a虽然会被删除,但是引用b不会被删除,也就是其值实际上没有删除,只是删除了引用a。python实际上是无法删除值的,不过当某个值不再被引用时,python会自动负责内存的回收的。exec 将字符串当作python语句进行运行 使用必须慎之又慎 >>> exec("print(‘Mathics‘)") Mathics exec与import比较相当于直接将代码复制到exec这个地方,可能会覆盖原来的变量,而import一般都会有自己的命名空间,exec具有潜在的破坏性。 通常的解决方法是将exec中的代码放在字典中,字典相当于起到名字空间作用 >>> from math import sqrt >>> scope = {} >>> exec(‘sqrt = 1‘, scope) #将语句在scope域中执行 >>> sqrt(4) 2.0 >>> scope[‘sqrt‘] 1eval 将字符串作为表达式计算并且返回值 >>>eval(input()) 1+2*3 7 >>>eval(input()) if 1 < 2 : print(‘Yes‘) SyntaxError: invalid syntax eval不能运行语句 相同的,eval也可以通过上述方法在命名空间中执行type 返回对象的类型 更深入的,type可以创建一个新的类型,相当于创建一个class type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 返回该类 >>> World = type(‘World‘, (), {‘Land‘: ‘Asia‘}) # 直接当类使用 >>> a = World() >>> a.Land ‘Asia‘ >>> World.Land ‘Asia‘ # 添加函数 >>> def WhereIam(self): print(self.Land) >>> World = type(‘World‘, (), {‘Land‘: ‘Asia‘, ‘WhereIam‘: WhereIam}) >>> World.WhereIam() TypeError: WhereIam() missing 1 required positional argument: ‘self‘ >>> a = World() >>> a.WhereIam() Asiaisinstance(object, class or type or tuple) 判断object是否为对应类型 >>> isinstance(12,int) True >>> isinstance([1,2], list) True >>> isinstance((1,2), tuple) True >>> a = Person() >>> isinstance(a, Person) True
python在函数式编程方面有一些有用的函数
map(func, *iterable) >>> map(str, range(5)) # Equivalent to [str(i) for i in range(5)] [‘0‘,‘1‘,‘2‘,‘3‘,‘4‘]filter(func, iterable) #过滤掉iterable中不符合func的值,返回剩下值得列表 >>> def isnum(x): return type(x) == int >>> seq = [‘abc‘, 12, ‘z‘] >>> list(filter(isnum, seq)) [12]
Python3 学习第十二弹: 补充something
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。