本文已参与「新人创作礼」活动,一起开启掘金创作之路。
函数
同一个命名空间中定义了多个同函数名、同参数的函数 最后的那个有效
默认函数返回None
python不允许前向引用 在函数定义前不允许调用
函数形参的表现形式主要有:位置参数、关键字参数、默认值参数、可变长度参数
默认值参数必须从右到左排 并且默认值参数只生成一次
- * 元组传参
- ** 字典传参
函数名.__defaults__ 查看当前函数所以默认值
参数定义的顺序必须是如下关系:
位置参数
默认参数
* 可变参数
** 可变参数
位于arg或者一个后面的所有参数都只能以关键参数的形式传值
调用函数时对实参序列使用一个星号*进行解包后的实参将会被当做普通位置参数对待,并且会在关键参数和使用两个星号 ** 进行序列解包的参数之前进行处理。
序列解包相当于位置传参,比关键字优先
关键字解包相当于关键字传参,所以,序列解包要位于关键字解包之前。
lambda函数只能包含一条语句,可以调用任意函数,支持 默认值参数和关键字参数。不能随意访问全局名称空间的参数。
reduce() 迭代累加
map() 映射到每一个函数上面去
filter() 过滤这个可迭代序列
Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念
在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域
nonlocal 闭包作用域变量 引用最近的,非全局的作用域的变量,这个变量必须存在
不熟的几个函数:callable,【delattr,getattr,hasattr】,frozenset,hash,isinstense,iter,【chr,ord】【str,repr】
yield 生成器函数 每次返回一点儿
用dis模块的dis可以查看字节码指令
正则表达式
re包下的东西:
compile,split,match,search,findall,sub
escape
match对象的group从0开始,groups是group非0项组合
文件 IO
UTF-8 1个字节英语 3个字节汉字
sys.getdefaultencoding()
ord获取编码,chr转换成字符
encode,decode 转换媒介 bytes()
拓展库
chardet
detect 推断编码