1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散
# 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去 def func(*args, **kwargs): # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典 print(args) print(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 = " # 全局 b = 36 # 全局 def func(): # 全局 c = "马化腾" # 局部 def func2(): print(c) a = 10 def 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() a = 1 def fun_1(): a = 2 def fun_2(): def fun_3(): nonlocal a a = 4 print(a) print(a) fun_3() print(a) print(a) fun_2() print(a) print(a) fun_1() print(a)
【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal的更多相关文章
-
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
-
python 全栈开发,Day10(动态参数,命名空间,作用域,函数嵌套)
一.动态参数 def func(a,b,c,d,e,f,g): pass func(1,2,3,4,5,6,7) 如果加30个参数呢?有没有万能的参数,可以代表一切参数呢? *args 动态参数,万能 ...
-
python(3)-函数动态参数
先来看一段代码 def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2, ...
-
python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
-
C#学习笔记(十):函数和参数
函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...
-
Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
-
跟着太白老师学python day10 函数嵌套, global , nonlocal
函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 d ...
-
《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用
原创文章,欢迎转载.转载请注明:关东升的博客 参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以 ...
-
Python—day10 函数的参数分类
一.实参与形参 1.形参:定义函数,在括号内声明的变量名,用来接受外界传来的值 def fn(形参们): pass def fn(a,b,c):# 形参就是考虑实参的值, ...
随机推荐
-
Upgrade Bioconductor
(1)Checking Version of Bioconductor > source("http://bioconductor.org/biocLite.R")Bioco ...
-
使用 Override 和 New 关键字进行版本控制
使用 Override 和 New 关键字进行版本控制 C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容. 这具有多方面的意义.例如,这意味着在基类中 ...
-
【LeetCode】232 &; 225 - Implement Queue using Stacks &; Implement Stack using Queues
232 - Implement Queue using Stacks Implement the following operations of a queue using stacks. push( ...
-
UVa 11234 Expressions (二叉树重建&;由叶往根的层次遍历)
画图出来后结果很明显 xyPzwIM abcABdefgCDEF sample output wzyxIPM gfCecbDdAaEBF * + - x y z w F B E a A d D b c ...
-
编译安装GCC 5.2.0
https://blog.atime.me/note/install-gcc-5.2.0-from-source.html 记录编译GCC 5.2.0时遇到的问题和解决方法,以备日后查询. 平时使用的 ...
-
Codeforces Round #315 (Div. 2B) 569B Inventory 贪心
题目:Click here 题意:给你n,然后n个数,n个数中可能重复,可能不是1到n中的数.然后你用最少的改变数,让这个序列包含1到n所有数,并输出最后的序列. 分析:贪心. #include &l ...
-
Material使用02 图标MdIconModule、矢量图作为图标使用及改进
1 MdIconModule模块的使用 1.1 在需要用到的模块中引入Material图标模块 import { BrowserModule } from '@angular/platform-bro ...
-
字符模式console usb串口安装centos
黄色部分是使用console口安装centos需要使用text模式,可以参考前文,同时镜像路径也是需要指定的,来自/dev/sda4 U盘 setparams 'Install CentOS 7' l ...
-
I - All X
F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每组测试数据占一行,包含四个数字x,m,k ...
-
Android Studio更改工程名异常解决方案 :can't rename root module
在修改Android Studio 中 project的名字时 ,提示 “can’t rename root module”. 这是因为Android Studio只能修改根目录内的所有文件,要修改p ...