Python基础函数

一、函数的定义

def是python中定义函数的关键字

# 首先了解函数是(完成一件事)以功能为导向,一个函数为一个功能.(减少代码重复性)
# 例:注册、登录、len等操作,增强代码可读性


# 写完函数,程序是不执行的,使用函数名()来调用函数
def f():
    print("aaa")
    print("xxx")
    print("yyy")
f()

# 当执行函数的时候,函数默认是有返回值,默认为None
# return不写默认为None,当执行到return的时候后面不在执行,类似break
def function():
    print("aaa")
    print("xxx")
    print("yyy")
    return "It's OK"  #当存在多个返回值时,是以元组方式返回
function()
print(function())

# 当retur后面有一个值的时候,返回这个值.当有多个值的时候返回一个元组

 

二、函数的参数

函数的参数就是在函数名后面括号里面的一个参数

def f(a):
    print("xxx")
    print(a)
    print("OK")
f("Its Ok")

 2.1、参数的分类

形参:写在函数声明的位置为形参,形式上表示完整的

实参:在函数调用的时候给函传递的值为实参

传参:在调用函数的时候给实参给形参传递参数的过程为传参

# 位置参数,按照位置来赋值
def f(x, y):
    z = x + y
    return z

print(f(3, 7))


# 编写函数传递函数,比较两个参数大小
def f(x, y):
    if x > y:
        return x
    else:
        return y

print(f(3, 9))

# 此上面写法有点麻烦,使用三元运算符
def f(x, y):
    z = x if x > y else y
    return z

print(f(4, 7))

 

# 当定义的参数非常多的时候,关python提供一种键字参数
# 关键字参数 不需要记住每个参数位置,只需要知道参数就可以(一一对应)
def f(a, b, c):
    print(a)
    print(b)
    print(c)

print(f(a="11111", b="22222", c="3333"))

 

# 混合参数就是位置参数和关键子参数混合使用
# 当在调用当时候可以给出位置参数, 或者指定关键字参数
# 在传参的时候位置参数必须和形参里面的位置参数相对应
def f(a, b, c):
    print(a)
    print(b)
    print(c)

print(f("111", b="222", c=200))

三、动态参数

当传入很多参数,或者不指定传入来那些参数时,需考虑使用动态传参

# 在参数位置使用*号表示接受任意参数
# 其中结果为 返回一下元组
def f(*args):
    print(*args)

print(f("x", "y", "z"))

# 当存在位置参数和动态参数时,位置参数必须在动态参数前面
# 否则动态参数会把所有位置参数都给接收
def f(x, y, *args, z="666"):
    print(x, y, *args, z)

print(f(1, 2, "aaaaa"))

# 当在形参存在默认参数时候,在动态参数后面,不给出关键字传参.默认也是会生效当的
# 形参的顺序: 位置参数,动态参数,默认参数

在python中动态可以接收位置参数只能通用*来表示,无法接收关键字参数,那python又提供一个**用来接收关键字参数

# 接收关键字参数用**表示
# **kwargs默认是输出是字典格式
def f(**kwargs):
    print(*kwargs)  #默认输出是字典格式,如此添加*号为字典都key值

print(f(x=1,y=2,z=3))

# 动态接收参数顺序:动态位置参数,默认值参数,动态关键字参数

# 当想接收所有参数时,可以使用动态位置参数和动态关键字参数搭配使用
def f(*args,**kwargs):
    print(args,kwargs)

print(f(1,2,3,4,x="aaaa",y="bbbbb"))

四、函数的注释

def logo(*args,**kwargs):
    """
    函数此为登录系统       #描述此函数
    :param args:        #描述参数的意思
    :param kwargs:      #描述参数的意思
    :return:            #执行完后返回调用值
    """
    print(args,kwargs)

五、名称空间

名称空间分为三种:内置命名空间,全局命名空间,局部命名空间。

内置命名空间:存放在python解释器提供的名字,例list、dict、str、int等都是内置命名空间

全局命名空间:在python文件中,函数以外的都属于全局命名空间

局部命名空间:在函数中声明得变量都属于局部命名空间

5.1、内置命名空间加载的顺序

加载顺序:

  内置命名空间

  全局命名空间

  局部命名空间

取之顺讯:

  局部命名空间

  全局命名空间

  内置命名空间

x = 10

def f():
    x = 20
    print(x)

print(f())

5.2、作用域

为作用的范围,按照生效的范围来划分:全局作用域,局部作用域

全局作用域:包括内置命名空间和全局命名空间,在整个文件中的任何位置都可以使用

局部作用域:在函数内部使用

六、gloabal、nonlocal

# globa表示不在使用局部作用域中都内容,而该用使用全局作用域变量
a = 10

def f():
    global a
    a = 28
    print(a)

print(f())

 

# nonlocal表示只在局部空间内,只修改那个一层的,如果上一层没有变量就会往上一层找,只会找到函数最外层不会到全局进行修改
a = 10

def f():
    a = 20
    def l():
        nonlocal a
        a = 30
        print(a)
    l()
    print(a)
    
print(f())

 

posted @ 2019-03-15 08:44  A裴小汪  阅读(247)  评论(0编辑  收藏  举报