python函数定义及默认参数

python函数

函数是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。
函数调用就是通过函数名在程序的不同地方多次执行。
函数分为预定义函数(可以直接使用)和自定义函数(用户自己编写)。

使用函数可以降低编程难度(将大问题划分为多个小问题);可以实现代码重用,提高效率。

定义格式

def 函数名([参数列表]):

函数名首字母小写,其余单词首字母大写

调用格式

函数名([参数])

实例

判断键盘输入是否为数字

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python

def fun_Is_Num():
sth = raw_input("Please input something:")
try:
if type(int(sth)) == type(1):
print "%s is a number" %sth
except:
print "%s is not a number" %sth

fun_Is_Num()

输出结果

1
2
3
4
5
6
[root@linux02 advance]# python 1_1_3.py 
Please input something:www
www is not a number
[root@linux02 advance]# python 1_1_3.py
Please input something:12
12 is a number

函数参数

参数分为形式参数和实际参数。
在定义函数时,函数名后面括号中的变量名称叫做形式参数。
在调用函数时,函数名后面括号中的变量名称叫做实际参数。

实例1

判断输入是否为数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python

import sys

def isNum(s):
for i in s:
if i in '0123456789':
pass
else:
print "%s is not a number." %s
sys.exit()

else:
print "%s is a number." %s

isNum(sys.argv[1])

输出结果

1
2
3
4
[root@linux02 advance]# python 1_2_1.py 12
12 is a number.
[root@linux02 advance]# python 1_2_1.py 12ffff
12ffff is not a number.

sys.argv

返回一个列表,其中argv[0]表示文件路径,后面的依次为参数。

1
2
3
4
5
6
7
8
#!/usr/bin/python

import sys

def fun():
print sys.argv

fun()

输出结果

1
2
3
4
5
6
[root@linux02 advance]# python 1_1_1.py
['1_1_1.py']
[root@linux02 advance]# python 1_1_1.py 1 b e
['1_1_1.py', '1', 'b', 'e']
[root@linux02 ~]# python /root/aming/advance/1_1_1.py 2
['/root/aming/advance/1_1_1.py', '2']

实例2

打印系统所有的PID,要求从/proc读取。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python

import sys
import os

def isNum(s):
for i in s:
if i in '0123456789':
pass
else:
# print "%s is not a number." %s
break
else:
print s,

for i in os.listdir('/proc'):
isNum(i)

默认参数

默认参数必须连续设置,直至最后一个参数,中间不可间断。

1
2
3
4
5
6
def fun(x,y=10,z):    错误
def fun(x=10,y,z): 错误
def fun(x=10,y,z=10) 错误
def fun(x=10,y=8,z=7): 正确
def fun(x,y=8,z=7): 正确
def fun(x=10,y=8,z=7): 正确

调用函数时,对于已经给的参数从左向右进行匹配。

Recommended Posts