Python全栈__动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

1、动态参数

  当实参数量与形参数量相等时,参数传递正常。

def func1(a, b, c):
    pass
func1(1, 2, 3)

  当实参数量与形参数量不相等时,则会报错。

def func1(a, b, c):
    pass
func1(1, 2, 3, 4, 5, 6, 6)

  用户传入到函数中的实参数量不确定时,或者为了以后扩展,此时要用到动态参数 *args  **kwargs(万能参数)。

  顺序:

    位置参数,*args,默认参数,**kwargs

  1、*args

    *args是接收的是所有的位置参数。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1, 2, 3, 4)

  注意:print()里面的args前面不能带 * 。

  2、**kwargs

    **kwargs接收的是所有的关键字参数。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(x=4, y=5, z=6)

  注意:print()里面的args前面不能带 * 。

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1, 2, 3, x=4, y=5, z=6)

  顺序

    位置参数,默认参数

def func2(a, b, sex = ‘男‘):
    print(a)
    print(b)
    print(sex)
func2(1, 2, ‘女‘)

  位置参数、*args、默认参数

def func2(a, b,*args, sex = ‘男‘):
    print(a)
    print(b)
    print(args)
    print(sex)
func2(1, 2, 5,6,7,8,9, sex=‘女‘)

  位置参数、*args、默认参数、**kwargs

def func2(a, b, *args, sex=‘男‘,age=20, **kwargs):
    print(a)
    print(b)
    print(args)
    print(sex)
    print(age)
    print(kwargs)
func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name=‘alex‘)

  加法器:

def sum1(*args):
    ret = 0
    for i in args:
        ret += i
    return ret
print(sum1(1, 2, 3,))

def func3(*args, **kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
l2 = [11, 21, 32]
func3(l1, l2)

def func3(*args, **kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
tu1 = (1, 2, 3)
tu2 = (11, 22, 33)
func3(*l1, *tu1, *tu2)

def func3(*args,**kwargs):
    print(args)
func3(1, 2, 3, 1, 2, 3, 11, 22, 33)

  在函数的定义中, * 是聚合的意思。

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
dic ={‘name‘: ‘alex‘}
dic1 ={‘age‘: 1000}
func3(*l1, **dic, **dic1)

  * 的魔性用法:

def func3(*args,**kwargs):  # 函数的定义 *用意是聚合。
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
tu1 = (1, 2, 3)
tu2 = (11, 22, 33)
func3(*l1, *tu1, *tu2)

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
func3(1,2,3,1,2,3,11,22,33)

def func3(*args,**kwargs):
    print(args)
    print(kwargs)
l1 = [1, 2, 3]
dic ={‘name‘: ‘alex‘}
dic1 ={‘age‘: 1000}
func3(*l1, **dic, **dic1)

2、名称空间、作用域、作用域链、加载顺序

  1、空间名称

  2、作用域

  3、作用域链

  4、加载顺序

3、函数的嵌套

4、global、nonlocal

   1、global

  2、nonlocal

原文地址:https://www.cnblogs.com/ZN-225/p/9587944.html

时间: 2024-08-28 04:01:08

Python全栈__动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal的相关文章

0510Python基础-动态参数-名称空间

1.昨日内容回顾 函数:避免重复代码,增强可读性. 特点:以功能为导向. def 函数名(): 函数体 函数的返回值:return 1,函数中遇到return结束函数. 2,return将函数内部的值返回给函数的执行者. return    None return None     None return 单个值 return 多个值  返回的是元组. 函数的参数. 实参: 位置参数.按顺序一一对应. 关键字参数.可以不按照顺序但是也必须一一对应. 混合传参:关键字参数永远在位置参数后面. 形参

函数的名称空间,函数的嵌套(global, nonlocal),函数名的运用

一 函数的名称空间 内置空间:存放python解释器内置函数的空间 全局空间:py文件运行时开辟的,存放的是执行的py文件(出去函数内部)的所有的变量与值的对用关系,整个py文件结束后才会消失. 局部空间:函数定义时,会记录下函数名与函数体的对应关系(什么都没有,只要内存地址,只有执行时才会在内存中临时开辟一个临时空间,存放的函数中的变量与值的对应关系,随着函数的结束而消失) 加载顺序:内置空间 > 全局空间 > 局部空间 取值顺序:局部空间 > 全局空间 > 内置空间 作用域 全

Python全栈__函数的初识、函数的返回值、函数的参数

1.函数的初识 def关键字 空格 函数名(与变量名命名规则相同):英文冒号 函数体 执行函数:函数名+() 函数是以功能为导向的. def login(): pass def register(): pass 1 def my_len(): 2 l1 = [1, 2, 3, 1, 6, 9, 10] 3 count = 0 4 for i in l1: 5 count += 1 6 my_len() 2.函数的返回值 return: 1.函数中遇到 return 结束函数,下面代码不执行. d

Python全栈__函数的有用信息、带参数的装饰器、多个装饰器装饰一个函数

1.函数的有用信息 代码1: 1 def login(username, password): 2 """ 3 此函数需要用户名,密码两个参数,完成的是登录的功能. 4 :return: True 登录成功. False登录失败. 5 """ 6 print(login.__name__) 7 print(login.__doc__) 8 print('登录成功...') 9 return True 10 11 print(login.__nam

Python全栈__字典及其操作

1.字典 字典,基础数据类型之一,{}以键值对的形式存储数据. 以key : value 形式存储数据.例如,name 为 key,Laonanhai 为 value. dic = {'name': 'Laonanhai', 'age': 45, 'name_list': ['反面教材', '俊俊', ...] } Python中唯一的映射类型.用以存储大量的关系型数据. 数据类型的分类: 可变类: 可变(不可哈希hash):list.dict.set.例如list = [11, 222, 33

Python全栈__字符串初识及操作

基础数据类型初识 1.int型 int:用于计算. 十进制转化成二进制的有效位数. 1 0000 0001 2 0000 0010 3 0000 0011 ... ... 100 ? 计算十进制转化成二进制的有效位数..bit_length() i = 100 print(i.bit_length()) 2.字符串str str: 'alex'.'1235443543'.'[1,2,3]'.可存放少量数据. 索引.切片.步长 索引编号: python12期 012345678 p 的正向索引编号

Python全栈__数据类型的补充、集合set、深浅copy

1.数据类型的补充 1.1 元组 当元组里面只有一个元素且没有逗号时,则该数据的数据类型与括号里面的元素相同. tu1 = ('laonanhai') tu2 = ('laonanhai') print(tu1, type(tu1)) print(tu2, type(tu2),) tu1 = (1) tu2 = (1,) print(tu1, type(tu1)) print(tu2, type(tu2)) tu1 = ([1, 2, 3]) tu2 = ([1, 2, 3],) print(t

Python全栈__服务器与多客户端通信、UDP协议、pycharm打印带颜色输出、时间同步的机制

1.服务器与多客户端通信 1 import socket 2 # 创建tcp socket的套接字 3 sk = socket.socket() 4 # bind 5 sk.bind(('127.0.0.1',8080)) 6 # 监听 7 sk.listen(5) 8 # 等待连接 9 while 1: 10 conn, addr = sk.accept() 11 while 1: 12 msg_s = input('>>>') 13 conn.send(msg_s.encode('u

20181128(闭包函数,函数嵌套,名称空间,作用域,装饰器待补充)

一.函数对象 在面向对象的编程中 一切皆对象 具体的体现: 1.函数可以被引用 def bar():    print('from bar')?f=barf()输出结果为:from bar 2.函数可以作为函数的参数 def bar():    print('from bar')?def wrapper(func): #func=bar    func() #bar()?wrapper(bar)输出结果为:from bar 3.函数可以作为函数的返回值 def bar():    print('