python函数的定义:
函数时逻辑结构化和过程化的一种编程方法
python中函数定义方法:
def test(x):
"The function definitions"
x+=1
return x
def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值
调用运行:可以带参数也可以不带
函数名()
定义一个函数
定义函数的规则:
①函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
②任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
③函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
④函数内容以冒号起始,并且缩进。
⑤return [表达式] 结束函数,选择性地返回一个值给用方。不带表达式的return相当于返回 None。
使用函数的好处:
1.代码重用
2.保持一致性,易维护
3.可扩展性
函数和过程
过程定义:过程就是简单特殊没有返回值的函数。
def test01():
msg='hello The little green frog'
print msg
def test02():
msg='hello WuDaLang'
print msg
return msg
t1=test01()
t2=test02()
print 'from test01 return is [%s]' %t1
print 'from test02 return is [%s]' %t2
总结:当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None
def test01():
pass
def test02():
return 0
def test03():
return 0,10,'hello',['alex','lb'],{'WuDaLang':'lb'}
t1=test01()
t2=test02()
t3=test03()
print 'from test01 return is [%s]: ' %type(t1),t1
print 'from test02 return is [%s]: ' %type(t2),t2
print 'from test03 return is [%s]: ' %type(t3),t3
总结:
返回值数=0:返回None
返回值数=1:返回object
返回值数>1:返回tuple
函数参数
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
4.默认参数
5.参数组
局部变量和全局变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
name='batman'
def change_name():
print('我的名字',name)
change_name()
def change_name():
name='蝙蝠侠'
print('我的名字',name)
change_name()
print(name)
def change_name():
global name
name='蝙蝠侠'
print('我的名字',name)
change_name()
print(name)
前向引用之’函数即变量’
def action():
print 'in the action'
logger()
action()
报错NameError: global name 'logger' is not defined
def logger():
print 'in the logger'
def action():
print 'in the action'
logger()
action()
def action():
print 'in the action'
logger()
def logger():
print 'in the logger'
action()
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
全局变量
局部变量
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
total = 0; # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2; # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total;
#调用sum函数
sum( 10, 20 );
print "函数外是全局变量 : ", total