学习10.内容# 1.函数的动态参数 # 2.函数的注释 # 3.名称空间 # 4.函数的嵌套

1.函数的动态参数

def func(a, b=1):
    print(a, b)

func(1)

*args

def func(a, b, *args):  # *args 是万能(接受任意多个)的未知参数 *在函数定义的时候叫做聚合
    print(a, b, args)

func(1, 2, 3, 4, 5, 6)

def func(a, b, *args):  # *args 是万能(接受任意多个)的未知参数 *在函数定义的时候叫做聚合
    print(a, b, *args)

func(1, 2, 3, 4, 5, 6)
未知参数 > 动态位置参数 > 默认参数

def func(*args, a=1, b=2):
    print(a, b, args)     # 元组(接受的位置参数)

func(12, 23, 43, 54, 654)

*kwargs

def func(a, b, **kwargs):
    print(a, b, kwargs)  # 字典(接受的关键字的参数)

func(12, 21, f=3)

def func(a, b, *args, c=1, d=2):
    print(a, b, *args, c, d)

func(1, 2, 3, 4)

def func(a, b, *args, c=1, d=2, **kwargs):
    print(a, b, *args, c, d, kwargs)   # *kwargs -- 获取到的字典的键

func(1, 2, 3, 4, c=8, d=10, e="alex", f="wusir")

综合

def func(*agrs, **kwargs):  # 万能传参
    print(agrs, kwargs)

func(1, 2, 3, 4, 5, 6, 7, 8, a=1, b=2, c=3)

总结

# 参数的优先级: 位置参数 > 动态位置参数 > 默认参数(关键字参数) > 动态关键字参数
# 1.万能参数; 动态位置参数,关键字参数(最常用***********)
# 2.未知参数,动态位置参数
# 3.动态位置参数,关键字参数,动态关键字参数

2.函数的注释

def func(a,b):
    """
    逻辑判断...
    :param a: str
    :param b: int
    :return: bool
    """
    print(a,b)
def func1(user,password):
    """
    密码加密
    :param user: 用户名 str
    :param password: 密码 str
    :return: 加密的密码 MD5
    """
    print(user,password)
print(func.__doc__)
print(func1.__doc__)
print(func.__name__)

3.名称空间

print(11)
a=10

def func():
    b = 20
    print(b)
内置空间: print input len
全局空间: 当前.py文件需要开辟的空间存放在全局空间
局部空间: 函数中开辟的空间就是局部空间

加载顺序:
    内置空间 > 全局空间 > 局部空间

取值顺序:
    局部空间 > 全局空间 > 内置空间(找不到就报错了!)

作用域:
    全局作用域: 内置空间 + 全局空间
    局部作用域: 局部空间

4.函数的嵌套

def func():
    print(1)
    def f1():
        print(2)
    return f1()
func()

不管在什么位置,只要是函数名+() 就是在跳用此函数

函数调用执行后,函数重新开辟的空间就自动销毁

def func():
    a = 1
    def foo():
        b = 2
        print(b)  # 2
        print(a)  # 1
        def f1():
            print(b) # 2
        return f1()
    return foo()
print(func())

函数的调用

def func():
    a = 1
    foo()
    print(a)

def foo():
    b = 2
    print(b)
func()
def a():
    a1 = 1
    c()
    print(c)
def b():
    b1 = 2
    print(b1)
def c():
    c1 = 3
    print(a)
def run():
    a()
run()
def func():
    a = 1
    def b():
        print(a)

def foo():
    b = 1
    def z():
        print(func)
        print(b)
    ret = z()
    func()
    return ret

def run():
    foo()
print(run())
def func(a):
    foo(a) #10

def foo(e):
    b(e) # return 10

def b(c):
    print(c)
    return 10

print(func(5))

5.gloabal,nonlocal

def func():
    global a  # 声明修改全局变量的值
    a += 1
    print(a)
func()
print(a)
a = 10
def f1():
    a = 10
    def f2():
        a = 15
        def f3():
            global a
            a += 1
            print(a)  # 11
        print(a)  # 15
        f3()
    print(a)  # 10
    f2()
f1()
a = 10
def func():
    def f1():
        global a
        a += 1
        def foo():
            nonlocal a
            a += 1
            print(a)   # 31
        foo()
        print(a) # 31
    f1()
func()
print(a)   # 10

总结

global : 修改全局空间的变量对应的值
nonlocal :在外层的函数中,修改局部空间的变量值.完全不涉及全局变量,
只修改离它最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数

原文地址:https://www.cnblogs.com/changxin7/p/11202383.html

时间: 2024-08-30 09:20:10

学习10.内容# 1.函数的动态参数 # 2.函数的注释 # 3.名称空间 # 4.函数的嵌套的相关文章

python基础之函数(动态参数,注释,名称空间,第一类对象及使用和函数嵌套)

函数的动态参数 1.函数的动态参数 位置参数,默认参数 动态参数的作用 *args ? 1.能够接受不固定长度参数 ? 2.位置参数过多时可以使用动态参数 动态参数的用法: def func(*c): #形参位置上的 * 是聚会 print(*c) #函数体中的 * 就是打散 #func(1,2,3,4,5,6,7,8,9,0) **def eat(a,b,*args): #位置参数,动态位置参数** print(a,b,args) #结果:面条 包子 ('饺子', '馅饼', '馒头') pr

函数之动态参数

基本函数只能所传的变量参数有限,如果想传任意个就需要使用函数动态参数 动态参数分两种: *代表多个, 动态参数有一个*和两个* 1.一个 * 默认将传入的参数全部放置在元组中(按照顺序传值) def f1(*args): print(args,type(args))f1(11,22,33,'abc','def') #传任意多个参数输出结果:(11, 22, 33, 'abc', 'def') <class 'tuple'> #显示的类型是元组动态参数还可以将列表添加输出为元组 def f1(*

函数的动态参数

一. def f1(*a):   ##形参前加一个*号,实参可以给任意多个值都可以接收 print(a) f1(123,344) 二. def f1(**a):  ##形参必须传入字典形式 print(a) f1(k1=123,k2=344) 三. def f1(*a,**aa):  ##以上两种格式的实参都可以接收,万能参 print(a) f1(1111,k1=123,k2=344) 四. *  , 元组,传入元组元素 ** ,字典,字典元素 习惯: def test(*args,**kwa

函数的动态参数与命名空间 day9

一.动态参数(不定长参数)def func(*args): 形参: 3种 动态参数*args 动态参数,不定长参数 *rarge用法 def func(*args): print(args,type(args)) func(1,2,'alex',3,4,5,6,8,4,7,2) 结果 *args按位置对应不能放到,其他形参位置前边 def func(*args,a,b,c): print(a) print(b) print(c) print(args,type(args)) func(1,2,'

函数对象、函数的嵌套、名称空间、函数的作用域、闭包

函数对象 def foo(): print('foo') 函数可以被赋值f=fooprint(f) #结果是一个内存地址f() #内存地址加()内运行函数 把函数当成参数传递def bar(func): print(func) func() bar(foo) 把函数当成返回值def bar(func): print(func) return func f=bar(foo)f()把函数当做容器类型的元素去用 def add(): print('=============>function add'

function(函数)中的动态参数

我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:     1.show(*args) def show(*args): print(args,type(args))    #以元组的形式向列表传递参数 show(11,22,33,44,55,66) 首先我们定义了一个函数,函数show(*args)里面的*args可以接收动态参数,这里我们接收一个元组形式的参数,我们可以向show()里面传递很多参数,函数默认把这些参数作为一个元组进行接收.     2

Python之路【第三篇】:Python基础(17)——函数动态参数

#动态参数:** 2星默认将传入的参数,全部放置在字典中f1(**{"kl":"v1", "k2":"v2"})#带2星的用来处理那些带有键值对的值,即一个key一个value的值 # 示例# def func(**kwargs):# print(kwargs,type(kwargs))# # 执行方式一# func(name='wupeiqi',age=18)# # 执行方式二# li = {'name':'wupeiqi'

python函数的动态传参.作用域与命名空间

一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi(good_food = "胡辣汤") # 关键字传参 chi("胡辣汤", "疙瘩汤", "西红柿鸡蛋汤") chi("大猪蹄子","大汉堡","薯条","圣

函数参数、函数嵌套、作用域、名称空间

一.函数参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解. Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码. 1.位置参数 我们先写一个计算x2的函数: def power(x): return x *