【Python3】Python函数

python基础

浏览数:473

2019-4-27

1. 函数对象

函数是第一类对象,即函数可以当做数据传递

  • 可以被引用

  • 可以当做参数传递

  • 返回值可以是函数

  • 可以当做容器类型的元素

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]()

2. 函数的嵌套

2.1 函数的嵌套的调用

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))

2.2 函数的嵌套定义

def f1():
    def f2():
        def f3():
            print("from f3")
        f3()
    f2()
f1()
# 返回值 from f3 ,即 f3的值

3. 名称空间

名称空间:存放名字的地方
名称空间分为三种

3.1 内置名称空间

随着python解释器的启动而产生

a = [1,2,3,4,5]
print(max(a))

3.2 全局名称空间

文件的执行会产生全局名称空间,指的是文件级别定义的名字都会放入改空间

x = 1
def fun():
    x = 2
    print(x)
fun()   
print(x)

3.3 局部名称空间

调用函数时会产生局部名称空间,只在函数调用时临时绑定,调用结束解绑定

x = 10000
def func():
    x = 1
    def f1():
        print(x)
        def f2():
            print(x)
        f2()
    f1()
func()

4. 作用域

作用域即范围(作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关)
查看作用域:globals(),locals()

4. 闭包函数

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)

5. 装饰器

6. 迭代器

7. 生成器

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))

8. 内置函数

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()

作者:Carson