python 10 动态参数
1. 函数的动态参数
1.1 动态位置参数(*arges)
def func(*args): # *arges 是万能(接受任意多个)的位置参数
print(args) #以元组的形式(1,2,3,4,5)输出
func(1,2,3,4,5)
def func(*args): #* 在函数定义的时候叫做聚合
print(*args) # *args 将元组打散 1 2 3 4 5
func(1,2,3,4,5)
def func(a,b,*args):
print(a,b,args) # 1 2 (3,4,5)
func(1,2,3,4,5)
def func(a,b,*arges,c=6):
print(a,b,arges,c) #1 2 (3,4,5) 6
func(1,2,3,4,5)
# 优先级:位置参数 > 动态位置参数 > 默认参数
1.2 动态关键字参数 (**kwargs)
def func(a,b,**kwargs):
print(a,b,kwags) # 1 2 {"c":3,"d":4} 字典(接受关键字的参数)
func(1,2,c=3,d=4)
def func(a,b,**kwargs)
print(a,b,*kwargs) # *kwargs 打散会取键
func(1,2,c=3,d=4) # 1 2 c d
1.3 万能传参:
(动态位置参数,动态关键字参数)
def func(a,b,*args,c=1,d=2,**kwags):
print(a,b,*args,c,d,kwags)
func(1,2,3,4,c=5,d=6,e="alex",f="wusir")
# 1 2 3 4 5 6 {"e":alex,"f":wusir}
def func(*arges,**kwargs):
print(arges,kwargs)
func(1,2,3,4,e=3,d=4,f=5)
#(1,2,3,4) {"e":4,"d":4,"f":5}
优先级:位置参数 > 动态位置参数 > 默认参数(关键字参数)> 动态关键字参数
lst = [1,2,3,4,5,6]
def func(*arges): #聚合
print(*arges) #再打散
func(*lst) # 先将lst打散 传入
dic = {"a":1,"b":2,"c":3}
def func(**kwargs):
print(kwargs)
func(**dic) #打散字典
2. 函数的注释
每写一个函数需注释 """ (回车) """
函数名.__doc__ #可查看函数的注释
函数名.__doc__ #查看函数的名字
3. 名称空间
内置空间:python中自带的文件,例如print/input
全局空间:当前py文件中需要开辟的空间存放在全局空间(顶头写)
局部空间:函数中开辟的空间就是局部空间
加载顺序:内置 > 全局 > 局部
取值顺序:内置 > 全局 > 局部
作用域:
全局作用域:内置空间 + 全局空间
局部作用域:局部空间
4. 函数嵌套
不管在什么位置,只要是 函数名+(), 就是在调用此函数。
函数执行后,函数体中开辟的空间会自动销毁。
同一级函数之间的数据不能共享。
#函数嵌套:
def func():
a = 1
def foo():
b=2
print(b)
print(a)
def f1():
print(b)
return f1()
return foo()
print(func()) # 2 1 2 None
#函数互相引用
def func():
a = 1
foo()
print(a)
def foo():
b=2
print(b)
func() # 2 1
def func():
a = 1
def b():
print(a) #没有调用
def foo():
b = 1
def z():
print(func) # 同级函数 会打印 func的地址
print(b)
ret = z()
func()
return ret # None
def run():
foo()
print(run()) # None
5. 函数变量修改
5.1 global
声明修改全局变量的值。
a = 10
def func():
global a #声明修改全局变量的值
a += 1
print(a) # 11
func()
5.2 nonlocal
在外层的函数中,修改局部空间的变量值.完全不涉及全局变量,只修改离它最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数
a = 10
def func():
def f1():
a = 30
def foo():
nonlocal a #只修改近的 a
a += 1
print(a) # 31
foo()
print(a) # 31
f1()
func()
print(a) # 10
# 31 31 10
python 10 动态参数的更多相关文章
- python函数动态参数详解
Python的动态参数: 1,参数前一个"*":在函数中会把传的参数转成一个元组. def func (*args): print(args) func(123,1,2,'a') ...
- python 函数动态参数,名称空间,global,nonlocal
##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...
- python 函数 动态参数 和嵌套
1.动态参数 是可以接收任意的参数.一种方式, 1,位置的动态传参, 写法是: *参数名 接收的参数是tuple类型举个例子:def yue(*food): print(food)yue(" ...
- python之动态参数 *args,**kwargs和命名空间
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...
- Day 10 动态参数&名称空间,局部全部.函数嵌套&global nonlocal关键字.
一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex", ...
- python day- 10 动态参数 函数的嵌套 命名空间和作用域 global和nolocal
一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数 > 动态位置参 ...
- python之动态参数 *args,**kwargs(聚合,打散--转载
转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...
- python之动态参数 *args,**kwargs(聚合,打散)
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...
- python(3)-动态参数实现字符串格式化
s1 = "{0} ===> {1}" s = s1.format('lilei', 'boy') print(s) l = ['lilei', 'boy'] s = s1. ...
随机推荐
- Django自带的后台管理系统
1.准备工作: 1-1.创建django项目和应用 1-2.修改settings.py配置文件: #应用配置: INSTALLED_APPS = [ 'django.contrib.admin', ' ...
- centOS7启动apache,报错Caused by: java.net.UnknownHostException: wshCentOS:
测试方法: ping 127.0.0.1 ping localhost 解决方案: vi /etc/hosts 把127.0.0.1和wshCentOS绑定就好 按 i 进入修改模式,按 esc 退出 ...
- mongodb的索引原理
首先说一下为什么要有索引,大家都知道mongdb是非关系型文档类型数据库,用过的人都有同一种感受,查询的效率太低,当你想提高查询效率的时候可以就需要使用索引了. 哈哈,本来想写一篇的,在网上看到了一篇 ...
- jQuery中事件与动画
jQuery中的事件与动画 一. jQuery中的事件 jQuery事件是对javaScript事件的封装. 1.基础事件 在javaScript中,常用的基础事件有鼠标事件.键盘事件.windo ...
- 【JDK】JDK源码分析-Vector
概述 上文「JDK源码分析-ArrayList」主要分析了 ArrayList 的实现原理.本文分析 List 接口的另一个实现类:Vector. Vector 的内部实现与 ArrayList 类似 ...
- 动态开内存(malloc与calloc)
malloc与calloc 1.函数原型 #include<stdlib.h> void *malloc(unsigned int size); //申请size字节的内存 voi ...
- HashMap常见面试题整理
花了三天时间来仔细阅读hashMap的源码,期间补了下不少数据结构的知识,刷了不少相关的面试题并进行了整理 1.谈一下HashMap的特性? 1.HashMap存储键值对实现快速存取,允许为null. ...
- java之Arrays.asList
使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比 ...
- 基于Spring框架应用的权限控制系统的研究和实现
摘 要: Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持.Acegi是基于Spring IOC 和 AOP机制实现的一个安全框架.本文探讨了Acegi安全 ...
- ibatis 核心原理解析!
关注下方公众号,可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码.虽然最后证明问题的原因与 ibat ...