摘要
函数的使用
目的
- 了解函数定义方法
- 掌握函数参数调用方法
- 函数变量的类型
- 函数返回值return的使用
内容
函数定义方法
- why 为什么使用函数
降低编程难度(大问题化解成小问题)
代码复用(避免重复劳动)
- who 什么是函数
定义:完成特定功能的一个余剧组,这组语句可以作为一个单位,并且可以取一个函数名;
可以在不同地方执行多次(函数调用)
- how 函数使用
预定义函数:python自带,可直接使用;
自定义函数;用户自己编写
#定义方法
def 函数名(参数列表): 定义
函数名(参数) 调用
#函数命名: 和变量一样,两个单词组成的函数,下滑线连接
#定义
def fun():
print("hello world")
#调用
fun()
#判断输入是否为整数的函数
def test_fun():
sth = raw_input("Please input something:")
# if sth.isdigit():
# return "num"
# else:
# return "Str"
# print test_fun()
try:
if type(int(sth)) == type(1):
print("{} is int".format(sth))
except ValueError:
print("{} is not int".format(sth))
test_fun()
函数的参数
#形式参数,定义函数是里面的参数
#实际参数,在调用函数时里面的参数
def add_fun(x,y):
print(x + y)
add_fun(2,3)
#比较大小
def max_fun(x,y):
if x > y:
print(x)
else:
print(y)
#默认参数可以简化函数的调用。设置默认参数时,有几点要注意:
#一是必选参数在前,默认参数在后,否则Python的解释器会报错;
#二当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
def power(x,n=2):
if not isinstance(n,int):
raise TypeError('bad type')
s = 1
while n > 0:
s *= x
n -= 1
return s
print(power(2))
#定义默认参数要牢记一点:默认参数必须指向不变对象!
#调用几次就输出几个end元素的列表
def add_L(L=[]):
L.append('end')
return L
#调用几次输出结果都是['END']
def add_End(L=None):
if L is None:
L = []
L.append('END')
return L
#可变参数
#定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,
def calc_t(*num):
sum = 0
for i in num:
sum = sum + i * i
return sum
l = (1,2,3,4,5,6)
print(calc_t(1,2,3,4,5))
结果:55
print(calc_t(*l))
结果:91
#关键字参数
#** 定义,接收打的是一个字典
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
return
print(person('pedro',22))
#结果:name: pedro age: 22 other: {}
#参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
#所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。
#默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!
#要注意定义可变参数和关键字参数的语法:
#*args是可变参数,args接收的是一个tuple;
#**kw是关键字参数,kw接收的是一个dict。
函数变量
- 局部变量 函数内部定义的变量。
- 全局变量:函数内不能对全局变量操作,若调用需要用global调用
x = 'global var'
def fun():
x = 100
print(x)
fun()
print(x)
print(locals())
函数返回值
- 默认返回值 None
- return 返回任意类型值
- return 执行后,函数终止
#判断是否是数字字符串
def isNum(s):
for i in s:
if i not in '0123456789'
return False
return True
总结
- 掌握函数定义和基本的使用方法
- 函数各个参数的详情使用方法和总结
- 全局变量和局部变量的区别
- 函数返回值return的使用方法
练习
#设计一个函数,统计任意一串字符串中数字字符的个数
def countInt(s):
count = 0
for i in s:
if i.isdigit():
count += 1
else:
continue
return count
a = countInt("qqw12w")
print(a)
#设计函数,统计任意一串字符串中每个字母的个数,不区分大小写
def countStr(str):
#空字典村数据
str_dict = {}
#写入,key26个字母,value出现个数
for i in xrange(26):
str_dict[chr(i + 65)] = 0
# for k,v in str_dict.iteritems():
# print k,v
#字符串变成大写
str = str.upper()
#判断字母个数
for c in str:
if ord("A") <= ord(c) <= ord("Z"):
str_dict[c] += 1
else:
continue
# 函数最终返回字典
return str_dict
打印字典内容
for k,v in countStr("dsdsd").iteritems():
print k,v
#1. 设计一个程序,从终端接收10个数字,并使用自己编写的排序函数,对10个数字排序后输出
def sortList():
L = []
for i in xrange(1,11):
L.append(int(raw_input('Please input {} number:'.format(i))))
L.sort()
for i in L:
print(i)
sortList()
#2. 设计一个函数,接收一个英文单词,从文件中查询该单词的汉语意思并返回
def dictCha(s):
d = {'you':'你'}
if s in d:
return d[s]
return False
print dictCha('you')