函数是第一类对象,即函数能够当作数据传递python
能够被引用闭包
能够当作参数传递函数
返回值能够是函数ui
能够当作容器类型的元素code
def foo(): print('from foo') def index(): print('from index') dic = { 'foo':foo, 'index':index, } while True: choice = input(">>>>>").strip() if choice in dic: dic[choice]()
def max(x,y): return x if x > y else y def max4(a,b,c,d): res1 = max(a,b) res2 = max(res1,c) res3 = max(res2,d) return res3 print(max4(234,456,123,789))
def f1(): def f2(): def f3(): print("from f3") f3() f2() f1() # 返回值 from f3 ,即 f3的值
名称空间:存放名字的地方
名称空间分为三种orm
随着python解释器的启动而产生对象
a = [1,2,3,4,5] print(max(a))
文件的执行会产生全局名称空间,指的是文件级别定义的名字都会放入改空间ip
x = 1 def fun(): x = 2 print(x) fun() print(x)
调用函数时会产生局部名称空间,只在函数调用时临时绑定,调用结束解绑定ci
x = 10000 def func(): x = 1 def f1(): print(x) def f2(): print(x) f2() f1() func()
做用域即范围(做用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关)
查看做用域:globals(),locals()作用域
def f1(): x = 1 y = 2 def f2(): print(x,y) return f2 f = f1() print(f.__closure__[0]) print(f.__closure__[0].cell_contents)
def foo(): print('一') yield 1 print('二') yield 2 print('三') yield 3 print('四') g = foo() # for i in g: # print(i) print(next(g)) print(next(g)) print(next(g)) print(next(g))
- | - | Built-in Functions | - | - |
---|---|---|---|---|
abs() | dict() | help() | min() | stator() |
all() | dir() | hex() | next() | slice() |
any() | divmod() | id() | object() | sorted() |
ascii() | enumerate() | input() | oct() | staticmethod() |
bin() | enav() | int() | open() | str() |
bool() | exec() | isinstance() | ord() | sun() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() | - |
delattr() | hash() | memoryview() | set() | - |