python中一切皆对象 map map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
print不换行
指定解码用utf-8(以下代码添加到文件头部)
运算
pycharm高亮
匿名函数 1 2 sum = lambda arg1, arg2: arg1 + arg2 # 函数也是一个对象 print sum(10, 20) # 重载括号 输出30
变量
strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 x=5 后再赋值 x=10,这种情况相当于生成了新的x 原来的5被丢弃了
可变类型:变量赋值list_x = [1,2,3] 后再赋值list_x = [1,2],这种list_x没有动,只是内部的一部分被修改了
函数的参数传递
不可变类型:类似c++的值传递,如整数、字符串、元组。如fun(x),传递的只是x的值,没有影响x对象本身。比如在 fun(x)内部修改x的值,只是修改另一个复制的对象,不会影响x本身。
可变类型:类似c++的引用传递,如列表、字典 。如fun(list_x),则是将list_x真正的传过去,修改后fun外部的list_x也会受影响
严格意义在python中我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
作用域
全局变量想作用于函数内,需加 global
python中的命名空间只有函数,不存在{}的命名空间
函数名
以单下划线开头_foo的代表不能直接访问的类属性
以双下划线开头的__foo代表类的私有成员
以双下划线开头和结尾的foo 代表 Python 里特殊方法专用的标识,如init ()代表类的构造函数。
生成器
斐波那契数列不获取fib函数的返回值1 2 3 4 5 6 7 8 9 def fib (max ): n,a,b =0 ,0 ,1 while n < max : yield b a,b =b,a+b n += 1 x = fib(6 ) for i in fib(6 ): print (i)
装饰器
装饰器装饰函数,一般用于变量的校验&给传入对象添加属性
@functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响
不带参数的装饰器,数字是函数执行的顺序1 2 3 4 5 6 7 8 9 def debug (func ): @functools.wraps(func ) def wrapper (*args, **kwargs ): pass return func(*args, **kwargs) return wrapper @debug def say (something ): pass
带参数的装饰器,数字是函数执行的顺序1 2 3 4 5 6 7 8 9 10 11 12 13 14 def logging (level ): def wrapper (func ): @functools.wraps(func ) def inner_wrapper (*args, **kwargs ): pass return func(*args, **kwargs) return inner_wrapper return wrapper @logging(level='INFO' ) def say (something ): pass @logging(level='DEBUG' ) def do (something ): pass