Python 关键知识2
2018-12-05 本文已影响27人
水之心
1 函数式编程
1.1 函数定义
函数是一个代码块,用 def
定义并返回一个值(任何情况下都是)
- Python 中的调⽤用符号:
()
, Python 中可调⽤判断函数:callable
- 函数中的
return
语句句:可省略略;可单独出现;可返回多个变量量(终⽌止与返回值) - 放在函数定义开头的字符串串称为 docstring,作为函数的⼀一部分(
__doc__
),交互式解释器器中的help
函数可以查看文档字符串。
1.2 函数参数
- 定义函数时使用的是形参。使用函数时传递的是实参
- 函数内部修改实参,不影响外部同名变量
- 实参的传递本质上是赋值:既然是赋值,就要看赋的是可变对象还是不不可变对象 把一个变量和它所在的地址想象成盒⼦里的东⻄西和盒⼦子外⽤用于标识的标签。可变对象赋值,赋的是标签,不可变对象赋值,赋的是盒⼦子本身。
两个建议:
- 最好不不同时使⽤用多个位置参数与多个关键字参数
- 如果使⽤用了了关键字参数,位置参数越少越好,并且集中放在最前⾯面
使用 *
传入多个参数:
def sum(*L):
result = 0
for x in L:
result += x
return result
sum(1, 2, 3)
6
与赋值不同,函数的参数用 *
拆包或缝合时,得到的是元组。
a, *b, c = range(7)
print(type(b))
<class 'list'>
def sum(*L):
print(type(L))
sum(1, 2)
<class 'tuple'>
def register(**kw):
print("kw's type is ", type(kw))
print('kw is', kw)
register(name='Tom', pi=3.1415)
kw's type is <class 'dict'>
kw is {'name': 'Tom', 'pi': 3.1415}
作用域的产⽣
- Local:function and class method
- Enclosed:its enclosing function, if a function is wrapped inside another function
- Global:the uppermost level of executing script itself
- Built-in:special names that Python reserves for itself
作用域的查看:globals()
与 locals()
作用域的生命周期
-
built-in
:解释器在则在,解释器亡则亡 -
global
:导入模块时创建,直到解释器退出 -
local
:函数调用时才创建
详细内容见:函数式编程之 Python