动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套

时间:2022-04-29 23:33:12
1. 动态参数    位置参数的动态参数: *args    关键字参数的动态参数 : **kwargs    顺序:        位置,*args,默认值,**kwargs    在形参上*聚合, **聚合    在实参上*打散, **打散例
# def chi(good_food, bad_food,drink, ice, jiu):#     print("我要吃", good_food, bad_food)## chi("盖浇饭", "辣条")

# 位置参数 > *动态参数 > 默认值参数

# def chi( *food, a, b): # 可以传入任意的位置参数#     print("我要吃", food)  # 动态参数接收到的是tuple类型的数据## chi("盖浇饭", "辣条", "面条")# def func(a, b, c, *args, d = 5):#     print(a, b, c, d, args)## func(1,2,3)# func(1,2,3,4,5,6,7, d ="马大哈")

# def chi(*food):#     print("我要吃", food)

# 写函数. 给函数传递任意个整数. 返回这些数的和# def he(*n):#     sum = 0#     for e in n:#         sum += e#     return sum# print(he(5))

# 动态接收关键字参数#  *位置参数# **关键字参数# def func(**food):   # **food动态接收关键字参数#     print(food) # 接收到的是字典## func(good_food="盖浇饭", bad_food="辣条", drink="冰封")

# 关键字参数一定在位置参数后面# 位置参数 > *args > 默认值 > **kwargs

# 这个函数可以接收所有的参数(无敌的)# def func(*args, **kwargs):#     print(args)#     print(kwargs)# func(1, 2, 5, 6, name="taibai",age=18, sex="不详")

# 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去

# def func(*args, **kwargs):  # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典#     print(args)#     print(kwargs)### # lst = ["马虎疼", "大洋哥", "小花生", "毛尖妹妹"]# # func(*lst)  # 实参, 打散, 迭代产生的## dic = {"name":"太白", "alex":"wuse"}# func(**dic) # 把字典打散. 以key=value形式进行传参

# def func(a, b):#     """#     计算a+b的和, 返回一个数#     :param a: 第一个数#     :param b: 第二个数#     :return: 返回计算之后的和#     """#     return a + b

# 定义函数# def 函数名(形参):  1.位置参数, 2, *args, 3.默认值参数, 4. **kwargs#     函数体   return 返回值# 函数名(实参)    1. 位置参数. 2.关键字参数. 3. 混合参数,
2. 命名空间和作用域    命名空间:        1. 内置命名空间: python解释内部运行时的变量函数        2. 全局命名空间: 我们在py文件中直接声明出来的变量,函数        3. 局部命名空间: 在函数内部声明的变量和函数.    作用域:        1.全局作用域:内置+全局        2.局部作用域:局部      globals() 查看全局作用域中的名字      locals() 查看当前作用域中的名字例
# a = "123"   # 全局# b = 36  # 全局# def func(): # 全局#     c = "马化腾"   # 局部## def func2():#     print(c)

a = 10def func():    a = 20    print(a)    # 就近原则    print(globals())  # globals() 获取到全局作用域(内置,全局)中的所有名字    print(locals())  # locals() 查看当前作用域中的所有名字func()
3. global和nonlocal    global: 把全局变量拿到局部来用.    nonlocal: 把离他最近的一层的变量拿过来.不会找全局例
# def func():#     global a    # a 不再是局部变量. 是全局变量#     a = 30  # 把全局中的a重新赋值成30#     print(a)# func()# print(a)

# a = 10# def func1():##     def func2():#         nonlocal a  # 找局部作用域中 离他最近的那个变量引入进来#         a = 20#         print(a)#     func2()#     print(a)# func1()4.函数的嵌套例
# def chi():#     print("我要吃")## print(chi())

# def func1():#     print("哈哈")## def func2():#     func1()#     print("呵呵")#     func1()# func2()

# def func1():#     print("呵呵")#     def func2():#         print("哈哈")#     func2()#     print("吼吼")# func1() #

def func1():    print("赵")    def func2():        print("钱")        def func3():            print("孙")        print("李")    def func4():        print("哈哈")        func2()    print("周")    func2()func1()
														
		

动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套的更多相关文章

  1. python之动态参数 *args,**kwargs和命名空间

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...

  2. python之动态参数 *args,**kwargs(聚合,打散--转载

    转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...

  3. python之动态参数 *args,**kwargs(聚合,打散)

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args  ...

  4. 函数动态参数 *args **kwargs

    def f1(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs))li = [11,22,33]dic = {'k1': ...

  5. Python_动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

    1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1( ...

  6. python --- 10 *args **kwargs 命名空间 作用域 函数的嵌套

    函数进阶 1.   "*"  和  "**" ① 在形参位置时   都是聚合的作用 *args    位置参数→元组 **kwargs   关键字参数→字典 混 ...

  7. python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

    二十八.函数进阶 1.   "*"  和  "**" ① 在形参位置时   都是聚合的作用 *args    位置参数→元组 **kwargs   关键字参数→ ...

  8. python可变参数*args, **kwargs

    python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ',  args print ' kwargs = ',  k ...

  9. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

随机推荐

  1. (二)深入梯度下降(Gradient Descent)算法

    一直以来都以为自己对一些算法已经理解了,直到最近才发现,梯度下降都理解的不好. 1 问题的引出 对于上篇中讲到的线性回归,先化一个为一个特征θ1,θ0为偏置项,最后列出的误差函数如下图所示: 手动求解 ...

  2. c# DataTable中使用排序的时候注意事项

    背景: 在项目使用DataTable的时候,使用到了其中ExtendedProperties的属性,但是之后出了问题:在排序之后ExtendedProperties的自定义的键值丢失了,代码如下: 误 ...

  3. 树莓派远程桌面配置-开机自启SSH

    必须先安装tightvncserver sudo apt-get install tightvncserver 再安装xrdp服务. sudo apt-get install xrdp 如果开着防火墙 ...

  4. (一)python基础知识

    Python:解释型语言(一边翻译一边运行)注释:单行注释(#).多行注释(ctrl+/):''' '''和""" """ (python2 ...

  5. PAT1046: Shortest Distance

    1046. Shortest Distance (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The ...

  6. Ehcache入门经典:第一篇

    ehcache主要是轻量级的缓存实现 ehcache.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  7. 【Loj117】有源汇上下界最小流(网络流)

    [Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...

  8. &dollar;Django 路飞学城项目简介

    - 基于极验实现动态验证码 - 在线视频播放:cc,HTML用的Flash - 基于Rest Framework实现 API接口 - 自定义rest认证token 认证 - 序列化以及自定义验证对请求 ...

  9. ASP&period;NET Web API实现微信公众平台开发(一)服务器验证

    最近朋友的微信公众号准备做活动,靠固定的微信公众平台模版搞定不了,于是请我代为开发微信后台.鉴于我也是第一次尝试开发微信后台,所以也踩了不少坑,此系列博客将会描述微信公众号各项功能的实现. 先决条件 ...

  10. 团队项目第二周spec设计

    本系统针对局域网进行联机聊天.聊天室分为服务器端和和客户端俩部分,服务器端程序主要 负责侦听客户端发来的信息,客户端需要登录到服务器端才可以实现正常的聊天功能. 1.本软件是一款局域网聊天软件,不能进 ...