Python 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
实例:
l1 = '23faesdafea2f' def my_len(): # def 关键字 定义一个关键字 #my_len 函数名书写规范与变量一样 # def 与函数名中间一样 #函数名():加上冒号 #函数体 count = 0 for j in l1: count += 1 return count print(my_len()) #函数的返回值 #写函数不要在函数里写print()
#1,在函数中,遇到return结束函数
#2,将值返回给函数的调用者。
#无return 返回None
#return None 返回None
#return 一个值 该值是什么,就直接返回给函数的调用者。
#return 多个值,将多个值放到一个元祖里,返回给函数的调用者
函数的传递
#函数的执行:函数名 + () while True: print(222) print(666) print(len([1,23,4])) # 函数的返回值 #写函数,不要再函数中写print() #return #1,在函数中,遇到return结束函数。 #2,将值返回给函数的调用者。 # 无 return # return None # return 1个值 该值是什么,就直接返回给函数的调用者,函数名() # return 多个值 将多个值放到一个元组里,返回给函数的调用者。 def fun(): print(111) print(222) print(333) return 2,3,4 a,b,c = fun() print(a,b,c)
def my_len(l): # l 形式参数 形参 print(l) count = 0 for j in l: count += 1 return count a = 'fdsafdsafdsagfsadf' print(my_len(a)) # 实际参数 ,实参 print(my_len([1,2,3]))
#实参角度:
#1. 位置传参,按顺序,一一对应。
def func(a,b,c): print(a) print(b) print(c) func('fdsafdas',3,4)
输出执行:
函数实例功能:
实例一:(写一个函数,功能大小比较)
num1 = int(input('请输入第一个数字:')) num2 = int(input('请输入第二个数字:')) def max_min(a, b): if a > b: return a else: return b print('本次比较最大数字为:',max_min(num1, num2))
执行后输出:
num1 = int(input('请输入第一个数:'))
num2 = int(input('请输入第二个数:'))
def max_min(a, b):
return a if a > b else b
print('本次比较的最大数为:', max_min(num1, num2))
#2,关键字传参,不按顺序,一一对应。
def max_min(a,b): return a if a > b else b print(max_min(b = 300,a = 200))
执行后输出:
#3,混合传参,关键字参数永远在最后面。 def func1(a,b,c,d,e): print(a) print(b) print(c) print(d) print(e) func1(1,2,d=4,c=3,e=5) func1(1,4,d=2,c=3,e=5)
执行后输出:
1
2
3
4
5
1
4
3
2
5
# 按照形参角度。
#1,位置传参。按顺序,一一对应。
def func(a,b,c):
print(a) print(b) print(c) func('fdsafdas',3,4)
执行后输出:
##实例:(使用函数写一个员工信息录入表)
def Infor_entry(username,sex='男'): with open('name_list',encoding='utf-8',mode='a') as f1: f1.write('{} {} '.format(username,sex)) while True: username = input('请输入姓名(男生以1开头):').strip() if '1' in username: username = username[1:] Infor_entry(username) else: Infor_entry(username,'女')
执行后输出:
写入后的文本内容:
###今日练习
1. 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
###实例一: def fun2(): li = [11,22,33,44,55,66,77,88,99] lis =[] for i in range(len(li)): if i % 2 == 1: lis.append(li[i]) return lis print(fun2())
执行输出:
###实例2 def fun2(): li = ['我','写','的','第','一','个','函','数'] lis = [] for i in range(len(li)): if i % 2 == 1: lis.append(li[i]) return lis print(fun2())
执行输出:
2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def fun2(): li = [11,22,33,44,55,66,77,88,99] lis =[] for i in range(len(li)): if i % 2 == 1: lis.append(li[i]) return lis print(fun2())
#方法二
def func1(argv):return argv[1::2]
print(func1([1,2,3,4]))
#方法三:
def func1(argv):
l1 = []
for i in range(len(argv)):
if i % 2 == 1:
l1.append(argv[i])
return l1
print(func1([1,2,3,4,5,6]))
# 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
li = [11,22,33,44,55,66,77,88,99] dic = {"name":"jin","age":18,"sex":"male","sx":"ma","se":"ml","ne":"john"} def mylen(a): # for i in range(len(a)): # i += 1 # i = len(a) return len(a) if len(a) > 5 else '长度小于5' print(mylen(li))
4. 写函数,检传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
###实例1 li = [11,22,33,44,55,66,77,88,99,'john','tom','jack','json'] def fun4(a): for i in a: pass return a[:2] print(fun4(li)) ###实例2
li = [11,22,33,44,55,66,77,88,99,'john','tom','jack','json']
def fun4(a):
if len(a) > 2:
return a[:2]
print(fun4(li))
5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
num1 = input('请输入内容:') def fun5(a): s1 = 0 s2 = 0 s3 = 0 s4 = 0 for i in a: if i.isdigit(): #统计数字 s1 += 1 elif i.isalpha(): #统计字母 s2 += 1 elif i.isspace(): #统计空格 s3 += 1 else: #统计其他 s4 += 1 layout = ''' 数字个数为: {} 字母个数为: {} 空格个数为: {} 其他个数为: {} ''' return layout.format(s1,s2,s3,s4) print(fun5(num1))
6.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
li = [11,22,33,44,55,66,77,88,99,' '] s1 = 'bhkbnlnlj' dic = {"name":"jin","age":18,"sex":"male","sx":"ma","se":"ml","ne":"john"} def fun6(a): for i in a: #print(i) if i == ' ': flag = True break else: flag = False #break #return '没有空格' #return flag # if flag == True: # return '此次判断有空格' # else: # return '此次判断正常' return '此次判断有空格' if flag == True else '此次判断正常' print(fun6(s1))
7. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
###方法一: dic = {"k1": "v1v1", "k2": [11,22,33,44]} def fun7(a): for i in a: if len(dic[i]) > 2: ##这里做匹配判断 dic[i] = dic[i][0:2] #这里使用步长法 return a print(fun7(dic))
###方法二:
dic = {"k1":"v11","k2":"v22","k3":"v33","k4":"v44"} def fun6(argv): for i in argv: if len(argv[i]) > 2: argv[i] = argv[i][:2] return argv print(fun6(dic))
8、写函数,接收两个数字参数,返回比较大的那个数字。
num1 = input('请输入第一个数字:') num2 = input('请输入第二个数字:') def fun9(a,b): return a if a > b else b print('本次比较最大数为:',fun9(num1,num2))