动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套
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,函数的嵌套的更多相关文章
- python之动态参数 *args,**kwargs和命名空间
		
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...
 - python之动态参数 *args,**kwargs(聚合,打散--转载
		
转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...
 - python之动态参数 *args,**kwargs(聚合,打散)
		
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...
 - 函数动态参数 *args **kwargs
		
def f1(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs))li = [11,22,33]dic = {'k1': ...
 - Python_动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal
		
1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1( ...
 - python --- 10       *args   **kwargs      命名空间    作用域     函数的嵌套
		
函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→字典 混 ...
 - python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
		
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...
 - python可变参数*args, **kwargs
		
python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ', args print ' kwargs = ', k ...
 - python基础学习Day10       函数形参的动态参数、*args **kwargs  命名空间    global 与 nonlocal
		
一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...
 
随机推荐
- php调用c#的dll(转)
			
这几天,一直在做DES ecb模式的加解密,刚用.net实现了加解密,完了由于需要又要转型成PHP代码,费了九牛二虎之力单独用PHP没能实现,结构看到一篇php直接调用c#里生成的.dll文件的方法, ...
 - Sql语句的优化摘要
			
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
 - 看图写代码---看图写代码  阅读<<Audio/Video Connectivity Solutions for Virtex-II Pro and Virtex-4 FPGAs >>
			
看图写代码 阅读<<Audio/Video Connectivity Solutions for Virtex-II Pro and Virtex-4 FPGAs >> 1.S ...
 - Excel技巧--让折线图带面积更直观生动
			
上图为带面积的折线图,比单纯的折线图更直观更好看. 制作办法: 1.先制作纯折线图: 2.再复制一遍数据列,选中图表,点击粘贴(ctrl+v): 3.右键图表,点击“更改图表类型”,对话框如下设置: ...
 - 禁止用键盘左右箭头,去切换PageControl页签
			
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
 - apache配置https协议
			
安装openssl有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.下面对两种方式均进行详细描述. 一.下载和安装openss 方法一:直接使用openssl安装包 W ...
 - 车载文档记录(ROM)
			
一,缩写词定义 1,ECU和ECM ECU: Engine Control Unit 发动机控制单元:从用途上讲则是汽车专用微机控制器.ECM: Engine Control Module 发动机控制 ...
 - Java第01次实验提纲(基本概念+编程环境入门+PTA)
			
0. 控制台下编译.运行 在Notepad++编写Java程序 学会使用控制台,javac.java 学会使用Notepad++ 参考资料: 控制台-cmd应用基础 扫盲教程 使用命令行编译并运行ja ...
 - S域传递函数的零点和极点
			
传递函数的极点就是对应微分方程的特征根(回忆一下,$\frac{1}{s+a}$是$e^{-a t}$的Laplace变换),因此它们决定了系统自由运动的模态. 传递函数的零点不直接形成自由运动的模态 ...
 - 18年春招某编程题:有三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等
			
题目描述: 给定三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等,操作有两种: 1.从X,Y,Z中选择两个数都加1. 2.从X,Y,Z中选择一个数加2. 求最少需要多少次操作. 题目思路: 1 ...