day_09 函数及参数
1.定义:把功能封装起来,方便下次直接调用
2.语法:def 关键词开头,空格之后接函数名称和圆括号()。
def 函数名(形参)
函数体
3.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
参数可以定义多个,也可以不定义。
参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参
数、**kwargs顺序定义。
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。
1.函数内部不写return,默认返回NONE
2.函数只写了return,返回NONE
3.如果函数只写了一个返回值,则返回一个值
4.如函数写了多个返回值,则调用者接收到一个元组,返回值是返回给调用方的.
1. 动态传参
1.形参
1.位置参数
2.默认值参数
3.动态传参
1.*args动态接收位置参数 传参的时候自动把实参打包成元组,交给形参
2.**kargs动态接收默认值参数 接收的内容以关键字形式
位置参数>*rags>关键字参数>**kargs
# 顺序 位置 > *args > 默认值参数 > **kwargs
def func(*args, **kwargs):
print(args, kwargs)
*,**在形参位置聚合
*,**在实参位置打散(针对可迭代对象,如字符串,列表等,打散后一一传进去,或者字典打散成关键字)
2.实参(函数的调用)
1.位置参数
2.关键字参数
3.混合参数
圆括号从来接收参数,若传入多个参数,应先按位置传,再按关键字传
2.返回值
如果函数有返回值,还应该定义变量来接收返回值
如果返回值有多个,也应该用相应数量的变量来接收返回值
1.无返回值的情况
函数名()
2.有返回值的情况
变量=函数名()
3.多个返回值
变量1,变量2....=函数名() 3.名称空间与作用域 1.名称空间:保存名字的的空间,包括函数,变量,类
1.内置名称空间:存放python解释器为我们提供的list print input等
2.全局命名空间:在python解释器中,在函数外声明的
3.局部命名空间:在函数,类,模块内声明的,都属于局部命名空间
加载顺序:内置命名空间>全局命名空间>局部命名空间(函数被执行的时候)
取值顺序:
1.在局部:局部命名空间>全局命名空间>内置命名空间
2.在全局:全局命名空间>局部命名空间
2.作用域:作用范围
1.全局作用域:包含全局命名空间和内置命名空间(在整个文件的任何地方都可以使用)
2.局部作用域:局部命名空间
3.用法
print(globals())返回全局作用域的名字
print(locals())返回局部作用域名字
4.函数的嵌套 每一层都会产生自己的命名空间
5. globals:查看全局作用域的名字
nonlocal:在局部引入上一层空间变量,如果没有,继续上一层,(一层一层往上)
day_09 函数及参数的更多相关文章
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- c#编程基础之函数可变参数
可变参数:int sum (params int[] values)int sum (string name,params int[] values) 注意:params参数必须是形参表中的最后一个参 ...
- 函数动态参数实现format
变量赋值一种是字符串格式化,一种是通过format的方式 1.字符串格式化 s="i am %s,age %d"%('Jasper',23)print(s) 打印输出:i am J ...
- python 函数传递参数的多种方法
python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
##廖雪峰py3笔记 ## '//'这是获得相除后的整数部分 ##a = 10//3 ##print (a) ## '/'获得相除后的结果,为浮点数,结果能整除也也是浮点数 ##b = 10/3 ## ...
- Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱
某日,同事问到关于new Date() 函数传参数,在火狐浏览器和谷歌浏览器控制台运行,会得到不同的结果,刚开始觉得不可能,后来实际操作才发现此陷阱 var date = new Date('2014 ...
- 零值初始化&字符串常数作为函数模板参数
1.在定义一个局部变量时,并希望该局部变量的初始化一个值,可以显示调用其默认构造函数,使其值为0(bool类型默认值为false). template <typename T> void ...
- Atitit dsl对于数组的处理以及main函数的参数赋值
Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ...
- Oracle过程及函数的参数模式,In、out、in out模式
Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...
随机推荐
- FTP批量下载数据文件
包含ftp的命令脚本,建立临时文件. ::服务器连接信息 set username=root set password=root set ip=xxx.xxx.xxx.xxx set RemoteDi ...
- SQL Server连接Oracle FAIL
第一步 安装好oracle客户端Oracle 11.2.0.3 Client Win 64-bit,并配置好TNS信息 第二步,配置odbc信息 配置好odbc连接信息,sql server肯定不能直 ...
- MyBatis总结四:配置文件xml详解
XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配置 ...
- 关于RAW 和 ASSEST文件夹的差异
以下内容转自:http://www.cnblogs.com/leizhenzi/archive/2011/10/18/2216428.html *res/raw和assets的相同点: 1.两者目录下 ...
- HDU 4899 Hero meet devil (状压DP, DP预处理)
题意:给你一个基因序列s(只有A,T,C,G四个字符,假设长度为n),问长度为m的基因序列s1中与给定的基因序列LCS是0,1......n的有多少个? 思路:最直接的方法是暴力枚举长度为m的串,然后 ...
- 面试题:3年工作经验 已看1 有用 memcache和redis有什么区别
此内容偏中高级,适合有三年经验者. 1. java中wait和sleep有什么区别?多线程条件下如何保证数据安全? 答:最大区别是等待时wait会释放锁(乐观锁),而sleep会一直持有锁 ...
- VMware Workstation 软件 创建 Ubuntu 14.04虚拟机
VMware Workstation 软件 创建 Ubuntu 14.04虚拟机 1. 安装VMare Workstation 软件 下载VMware 11 软件 http://www.dntk.or ...
- 100085G GCD Guessing Game
传送门 题目大意 给定一个数N,现在又一个数x,在1~N之间,现在每次可以猜一个数a,返回gcd(x,a),问说最少猜几次可以确定x. 分析 这个题应该可以算是贪心,但是没人知道这样为啥是对的(雾), ...
- c++中怎么实现Java中finally语句
所有学习c++的书籍都明确提出了,不要使用goto, 以免造成程序流程的混乱,使理解和调试程序都产生困难. 但是我们遇到这样一个场景怎么办:就是不管程序执行成功与否,都要执行一些资源释放语句,相当ja ...
- python产生随机字符串
def GenerateRandomString(len, basechars = []): if (basechars == []): x = range(ord() x.extend(range( ...