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 ...
随机推荐
- ASP.NET MVC学习笔记 第二天
创建视图 返回给客户端的HTML代码最好通过视图指定.视图都在Views文件夹中定义.ViewsDemo控制器的视图需要一个ViewsDemo子目录,这是视图的约定. 可以把多个控 ...
- Android架构设计之插件化、组件化
如今移动app市场已经是百花齐放,其中有不乏有很多大型公司.巨型公司都是通过app创业发展起来的:app类型更加丰富,有电子商务.有视频.有社交.有工具等等,基本上涵盖了各行各业每个角落,为了更加具有 ...
- “互联网+”背景下使用微信公众号增强班主任工作与整合教学资源(泰微课)
前记:此文是我爱人一项作业.因为我本人对于微信这一块比较熟悉,就参与这项作业中.此文已经参加移动和教育相关活动.作者是我爱人,如有转载请署名作者. 一.什么是"互联网+"? 早在1 ...
- [Swift] 创建一个对象
创建一个对象 先写一个People类 // // People.swift // Class // // Created by YouXianMing on 15/3/18. // Copyright ...
- linux邮件客户端mutt日志文件,发不出邮件
linux上面使用很方便的收发邮件客户端(即MUA),还有一个是mail,大家也可以试试. 在网上找了很多,都说需要msmtp配合使用,其实mutt里面也内建了smtp支持的. mutt and SM ...
- Linux 下shell中exec解析
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell ...
- 关于动态门户WEB博雅互动的源代码(HTML+CSS+javascript)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 沉淀再出发:kafka初探
沉淀再出发:kafka初探 一.前言 从我们接触大数据开始,可能绕在耳边的词汇里面出现的次数越来越多的就包括kfaka了.kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息, ...
- 【Azure IoT DevKit】实验终于做完了
大家好,我是MSP李桑榆 今天终于把几个Azure IoT DevKit的小实验的视频给做完了. 不敢说什么指导,只是给大家一个参考.因为Devkit不需要你写一行代码,只需要你按着步骤来,并没有什么 ...
- 4.GlusterFS 常见故障处理
一般硬盘也要备用几块,因为随着发展,可能这些型号的硬盘不好买到了,一般的事故不会在开始一两年出,在硬件老化的时候出故障的频率高. 4.1 硬盘故障 如果底层做了 RAID 配置,有硬件故障,直接更换硬 ...