Python学习笔记(十一)-- Python函数(二)
2017-08-29 18:23
323 查看
一、参数
以下是调用函数时可使用的正式参数类型:
必备参数
关键字参数
默认参数
不定长参数
下面我们一一介绍:
1、必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用printme()函数,你必须传入一个参数,不然会出现语法错误:
输出结果为:
2、关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:<
4000
/div>
输出结果为:
下例能将关键字参数顺序不重要展示得更清楚:
输出结果为:
3、缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
输出结果为:
4、不定长参数
当需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例:
输出结果为;
二、变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
全局变量
局部变量
三、全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
输出结果为:
四、注意
全局变量想作用于函数内,需加 global
(1)global---将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。
(2)一个global语句可以同时定义多个变量,如 global x, y, z。
以下是调用函数时可使用的正式参数类型:
必备参数
关键字参数
默认参数
不定长参数
下面我们一一介绍:
1、必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用printme()函数,你必须传入一个参数,不然会出现语法错误:
#可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme();
输出结果为:
Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)
2、关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:<
4000
/div>
#可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme( str = "My string");
输出结果为:
My string
下例能将关键字参数顺序不重要展示得更清楚:
#可写函数说明 def printinfo( name, age ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return; #调用printinfo函数 printinfo( age=50, name="miki" );
输出结果为:
Name: miki Age 50
3、缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
#可写函数说明 def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return; #调用printinfo函数 printinfo( age=50, name="miki" ); printinfo( name="miki" );
输出结果为:
Name: miki Age 50
Name: miki
Age 35
4、不定长参数
当需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例:
# 可写函数说明 def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return; # 调用printinfo 函数 printinfo( 10 ); printinfo( 70, 60, 50 );
输出结果为;
输出: 10 输出: 70 60 50
二、变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
全局变量
局部变量
三、全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
total = 0; # 这是一个全局变量 # 可写函数说明 def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2; # total在这里是局部变量. print "函数内是局部变量 : ", total return total; #调用sum函数 sum( 10, 20 ); print "函数外是全局变量 : ", total
输出结果为:
函数内是局部变量 : 30 函数外是全局变量 : 0
四、注意
全局变量想作用于函数内,需加 global
globvar = 0 def set_globvar_to_one(): global globvar # 使用 global 声明全局变量 globvar = 1 def print_globvar(): print(globvar) # 没有使用 global set_globvar_to_one() print globvar # 输出 1 print_globvar() # 输出 1,函数内的 globvar 已经是全局变量
(1)global---将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。
(2)一个global语句可以同时定义多个变量,如 global x, y, z。
相关文章推荐
- linux下python学习笔记(八)函数2
- python学习笔记(十一)标准库sys
- Python学习笔记(十一)——正则表达式
- linux下python学习笔记(十一)数据结构1
- <5>python学习笔记——函数
- Python学习笔记(十一)
- python学习笔记(十一) - 正则表达式
- python 函数参数学习笔记
- 11. Python脚本学习笔记十一函数与参数
- 《Python学习手册》学习笔记(16)之第16章函数基础(关键词:编程语言/Python)
- Python学习笔记——函数
- Python框架之Django学习笔记(十一)
- python学习(十一)函数、作用域、参数
- Python学习笔记(十一)----Python break 语句
- 《Python学习手册》学习笔记(19)之第19章函数的高级话题(关键词:编程语言/Python/递归函数/匿名函数)
- 《Head First Python》学习笔记02 模块和函数参数缺省值
- Python学习笔记(十一)——处理PDF密码破解
- Python学习笔记(十一)—— 函数式编程
- Python学习札记(十一) Function2 函数定义
- Python学习笔记(十一):Python函数