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 ...
随机推荐
- 开博缘由 , 可点下看看 http://www.cnblogs.com/jshare
记录日常用中用到.遇到的问题 实现过程,仅供参考 不定时更新 ------------------- 之前看过一个文章,大概说的是开发和用到的过的代码,可以提取出一些代码片段,长时间下来,你会发现部分 ...
- RocketMQ读书笔记7——吞吐量优先的场景
[Broker端进行消息过滤] 在Broker端进行消息过滤,可以减少无效消息发送到Consumer,少占用网络宽带从而提高吞吐量. [过滤方式1——通过Tag过滤] [ 关于Tag和Key ] 对一 ...
- [算法练习]Add Two Numbers
题目说明: You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- ubuntu搭建LAMP全教程及简单使用
一:安装: 参考:http://jingyan.baidu.com/article/a681b0de36ad683b18434691.html 本经验向你展示如何在ubuntu14.04 环境下搭建a ...
- 【Leetcode】【Easy】Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- how to drop multiple talbes in oracle use a sigle query
Tool:PL/SQL developer Syntax:SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables; 1.then you ...
- 深入浅出SharePoint2013——使用沙箱解决方案
启用“Microsoft SharePoint Foundation Sandboxed Code Service”后,我们就可以使用Sandboxed solution了.
- S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析
题目这个增强的输入参数很恐怖,长长的一串: CALL BADI l_badi->BEFORE_UPDATE EXPORTING IT_PIINSTRUCTIONVALUE = IT_PIINST ...
- python接口测试:自动保存cookies
接口测试中遇到上一个请求返回响应包含cookie(如下图登录请求的响应结果).需将cookies保存下来,后续请求自动带入,否则会提示未登录. python requests的cookie类型是< ...
- form表单提交行为
项目中有一个表单如下图,当我填完数据源名称这个input后,点击回车键本意是想跳到下一个input处,然而呢却触发了下面的添加这个按钮的事件,这是怎么回事呢,明明添加这个按钮并没有设置type=&qu ...