19-3-14Python中函数的进阶
1.动态参数:
def func(*args): #在形参位置*叫做聚合
print(args) #元组形式 func(1,2,3,4,5,6) def func(**kwargs): # 动态关键字参数
print(kwargs) func(a=1, b=2, c=3) # 关键字的形式传参
*args 和 **kwargs
是可以更换的,但是程序员约定都用它
用途:在不明确接收参数、数量时使用*args和**kwargs
位置参数>动态的位置参数
形参:位置>动态位置>默认参数>动态默认参数
实参:位置>关键字参数
在实参调用的时候,*将可迭代的对象打散,字典是将键取出
在形参出现*就是在聚合
在实参调用的时候,**将字典打散成 关键字参数(键=值)
在形参处出现**就是将关键字参数聚合成一个字典。
注意:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。
2.函数的注释
print(aaa._doc_)查看注释
3.名称空间
1. 内置空间中所有代码——内置空间
2. 自己写的py文件——全局空间
3. 函数中的代码——局部空间
*注:
加载顺序:
内置空间——>全局空间——>局部空间
查找值的顺序:
局部空间——>全局空间——>内置空间——>报错
作用域:
全局作用域 内置+全局=全局作用域
局部作用域 函数内的就是局部作用域
a = 10 def func():
global a #global:声明a为全局变量。//找到要修改的值,修改后放回
a += 1 func()
print(a)
4.函数的嵌套
第一种函数嵌套:函数嵌套函数
第二种函数嵌套:多个函数嵌套
5.global nonlocal
nonlocal:在一个局部空间内,nonlocal会修改离他最近的那个变量,如果上一层没有就继续向上找,直到走到局部空间头部,都没有则报错。
global:在局部修改全部变量,如果没有就创建一个新的。
def func(*args): #在形参位置*叫做聚合
print(args) #元组形式
func(1,2,3,4,5,6)
def func(**kwargs): # 动态关键字参数
print(kwargs)
func(a=1, b=2, c=3) # 关键字的形式传参
19-3-14Python中函数的进阶的更多相关文章
- C/C++中函数参数传递详解(二)
昨天看了内存管理的有关内容,有一点了解,但不是很深入,发现之前写代码时有很多细节问题没有注意到,只知道这样做可以实现功能,却不知道为什么可以这样,对于采用自己的方法造成的隐患也未知,更不晓得还有其他方 ...
- 动态链接库中函数的地址确定---PLT和GOT [转]
前面写过动态链接库 延迟绑定的一篇博文,那篇文章我非常喜欢,但是当时刚搞清楚,自己写的比较凌乱,我最近学习了Ulrich Drepper的How to write share library,学习了几 ...
- Effective C++ 第二版 17)operator=检查自己 18)接口完整 19)成员和友元函数
条款17 在operator=中检查给自己赋值的情况 1 2 3 class X { ... }; X a; a = a; // a 赋值给自己 >赋值给自己make no sense, 但 ...
- Swift 中函数使用指南
关于Swift中的各种函数的使用的总结 前言 时间久了,好多东西我们就会慢慢忘记,在这里总结一下Swift中函数的使用原则,把大部分的函数使用技巧用代码示例来做了演示,但是如果想提高,还是要多多思考才 ...
- java 中函数的参数传递详细介绍
java中函数的参数传递 总结: 1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的对象. 2.当将基本类型或基本类型的包装集作为参数传递时 ...
- 小学生都能学会的python(函数的进阶)
小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- Swift3中函数的使用
前言:前不久,Swift语言也更新到了3.0版本,对编程有一定基础的朋友一定不会对函数这个概念陌生.而Swift语言中的函数也是大同小异的,今天就跟着小编来学习一下Swift3中函数的不一样的用法. ...
- JavaScript中函数函数的定义与变量的声明<基础知识一>
1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...
随机推荐
- LintCode2016年8月8日算法比赛----子树
子树 题目描述 有两个不同大小的二叉树:T1有上百万的节点:T2有好几百的节点.请设计一种算法,判定T2是否为T1的子树. 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 ...
- SSH笔记一
加入JAR包(包括c3p0和sql的,重复包删低版本的) 加入Spring 1) 配置web.xml文件 ------删内容留web-app--------ctrl+shift+f--------c ...
- ‘ActiveX component can’t create object解决方法
Event Type: WarningEvent Source: Health Service ScriptEvent Category: NoneEvent ID: 1Dat ...
- In-app Billing 概述
这个文档讲解了In-app Billing的基础构成和功能,为了能够把In-app Billing功能添加到你的程序中,你需要很好的理解这些内容. 注意: 保证你的应用遵从发布地国家的相关法律. 举例 ...
- Exchange 2007 前端 IIS 内存占用过高
已经碰见了好几次,在Exchange2007的场景中,前端角色所在服务器的w3wp.exe进程总是占用大量内存,以至于触发反压组件,停止了正常的邮件流投递,造成业务中断. 终于下决心查一下到底问题问题 ...
- iOS自动化-- 常用iOS命令
iOS命令: 获取设备的的UDID idevice_id --list # 显示当前所连接设备的 udid instruments -s devices # 列出所有设备,包括真机.模拟器.mac i ...
- stderr: xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
错误提示: (1). stderr: xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer direc ...
- Java 基本语法(关键字、标识符、常量、注释)
1. Java 程序的构成 对象(object):对象是类的一个实例,有状态和行为. 类(class):类是一个模板,它描述一类对象的行为和状态. 方法(method):方法就是行为,一个类可以有很多 ...
- 021.11 IO流 序列流
序列流:SequenceInputStream特点:流对象有序排列解决问题:将多个输入流合并成一个输入流,将多个源合并成一个源,对于多个源的操作会变简单. 构造函数参数就是输入流,一初始化就合并了多个 ...
- 分享个Cognos8.4安装介质的百度云网盘链接
https://pan.baidu.com/share/link?shareid=3750687613&uk=3441846946#list/path=%2F