python函数的相关操作
程序员文章站
2022-07-09 10:19:26
...
python函数的相关操作
函数上
-
定义函数
def print_helloworld(): print("hello world") #这是定义函数
-
定义和调用函数
#定义函数 def print_helloworld(): print("hello world") #调用函数 print_helloworld() # 运行结果 hello world
-
带参函数
def calculator(num1,num2): reault = num1+num2 print("%d+%d=%d"%(num1,num2,reault)) num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字")) calculator(num1,num2) # 运行结果 请输入第一个数字:5 请输入第二个数字6 5+6=11
-
函数返回值
def calculator(num1,num2): reault = num1+num2 print("%d+%d=%d"%(num1,num2,reault)) return reault def number(num): num+=3 print(num) num1 = int(input("请输入第一个数字:")) num2 = int(input("请输入第二个数字")) reault = calculator(num1,num2) number(reault) # 运行结果 请输入第一个数字:5 请输入第二个数字6 5+6=11 14
-
函数一次反回多个值
# 函数不能多个return # 函数遇到return就结束 # 函数反回多个值的方法有很多种 # 我就不一一列举 def test(): a = 11 b = 22 c = 33 d = [a,b,c] return d #第一种 return d #第二种 return [a,b,c] #第三种 return (a,b,c) #第四种 return a,b,c # 第四种等价第三种 都是以元组反回 # 字典也可以能把多个书封装在一起的都可以就不一一 #列举了 num = test() print(num) # 运行结果 [11, 22, 33]
-
函数的嵌套调用
def print_sum(num1,num2): result = num1 + num2 return result def print_avg(num): num/=2 return 2 def print_avg_square(avg): avg**=2 return avg #请输入两个数 num1 = int(input("请输入第一个数:")) num2 = int(input("请输入第二个数:")) two_sum = print_sum(num1,num2) print("两数的和:%d"%two_sum) avg = print_avg(two_sum) print("两数的开方:%d"%avg) square = print_avg_square(avg) print("两数开方的平方:%d"%square) # 运行结果 请输入第一个数:5 请输入第二个数:6 两数的和:11 两数的开方:2 两数开方的平方:4
-
函数的嵌套调用应用
def test1(): print("*"*50) def test2(): i = 0 while i<5: test1() i+=1 test2() # 运行结果 ************************************************** ************************************************** ************************************************** ************************************************** **************************************************
函数下
局部变量和全局变量
-
局部变量
def test1(): a = 100 #a是test1函数里面的局部变量 print("a = %d"%a) def test2(): #test2 不能直接用test1里面的a变量 pass test1() test2() # 运行结果 a = 100
-
全局变量
a = 100 #全局变量 def test1(): print("a = %d"%a) #先找函数里的局部变量 然后 找函数外的全局变量 def test2(): print("a = %d"%a) test1() test2() # 运行结果 a = 100 a = 100
-
全局变量和局部变量的区别
''' # 局部变量的用法 def get_wendu(): wendu = 100 return wendu def print_wendu(num): print("wendu=%d"%wendu) num = get_wendu() print_wendu(num) ''' # 全局变量的用法 wendu = 0 def get_wendu(): #如果wendu这个变量已经在全局变量的位置定义了,此时还想在函数中对这个全局变量进行修改的话 #那么 仅仅是 wendu=一个值 这还不够,,,此时wendu这个变量是一个局部变量,仅仅是和全局变量的 #名字相同罢了 #wendu = 33 #使用 global 用来对一个全局变量的声明,那么这个函数中的wendu = 33 就不是应以一个局部变量,而是 #对全局变量进行修改 global wendu #提示计算机下面用到全局变量 wendu = 33 def print_wendu(): print("wendu=%d"%wendu) get_wendu() print_wendu() # 运行结果 wendu=33
-
全局变量的定义位置
a = 10 b = 20 c = 30 def test(): print(a) print(b) print(c) test() #只要在函数调用前定义的全局变量 都有效 #不过 一般 定义函数的最上面写 全局变量 #然后定义函数 #在调用函数 这三个模块 # 运行结果 10 20 30
-
全局变量和局部变量名字相同
a = 100 # 定义全局变量 # 最好在变量前面加 g_a = 100 一看就知道是个global的全局变量 def test1(): a = 200 #在函数中 如果对一个和全局变量名字相同的变量进行=value的时候,默认是定义一个变量 #只不过这个变量的名字和全局变量的名字相同罢了 # #如果想在执行a=value时,不是定义局部变量,而是对全局变量修改,那么可以添加global进行声明 print("a = %d"%a) def test2(): print("a = %d"%a)#如果打印了100就声明了test函数没有对全局变量进行修改,而是定义了一个局部变量 test1() test2() # 运行结果 a = 200 a = 100
函数
-
名片管理系统-函数版
#用来存储名片 card_infors = [] def print_menu(): '''这是完成打印功能的''' print("="*50) print(" 名片管理系统 8v.6") print(" 1、添加一个新的名片") print(" 2、删除一个名片") print(" 3、修改一个名片") print(" 4、查询一个名片") print(" 5、显示所有的名片") print(" 6、退出系统") print("="*50) #1、打印功能提示 print_menu() def append_list(): '''这是完成添加功能的''' global card_infors new_name = input("请输入新的名字:") new_qq = input("请输入新的qq:") new_weixin = input("请输入新的weixin:") new_addr = input("请输入新的地址:") #定义一个新的字典,用来存储一个新的名片 new_infor = {} new_infor['name'] = new_name new_infor['qq'] = new_qq new_infor['weixin'] = new_weixin new_infor['addr'] = new_addr #将一个新的字典,添加到列表中 card_infors.append(new_infor) #print(card_infors) for test print("="*50) print() def del_list(): '''这是完成删除功能的''' global card_infors new_name = input("请输入你要删除人的姓名:") lenght = len(card_infors) i = 0 while i<lenght: if card_infors[i]['name'] == new_name: del card_infors[i] break i+=1 print("="*50) print() def amend_list(): '''这是完成修改功能的''' global card_infors index = 0 i = 0 name = input("请输入你要修改的名字:") for dict_name in card_infors: if dict_name['name'] == name: card_infors[i]['name'] = input("请输入一个新的名字:") card_infors[i]['qq'] = input("请输入一个新的qq:") card_infors[i]['weixin'] = input("请输入一个新的weixin:") card_infors[i]['addr'] = input("请输入一个新的地址:") #表示找到了 index=1 break i+=1 #判断是否找到 if index == 0: print("没有找到。。。") print("="*50) print() def in_list(): '''这是完成查询功能的''' global card_infors index = 0 name = input("请输入你要查找的名字:") for dict_name in card_infors: if dict_name['name'] == name: index+=1 print("名字\tQQ\t微信\t住址") print("%s\t%s\t%s\t%s"%(dict_name['name'],dict_name['qq'],dict_name['weixin'],dict_name['addr'])) break if index == 0: print("没找到。。。") print("="*50) print() def show_list(): '''这是显示当前名片信息的功能的''' global card_infors print("名字\tQQ\t微信\t住址") for card in card_infors: print("%s\t%s\t%s\t%s"%(card['name'],card['qq'],card['weixin'],card['addr'])) print("="*50) print() def main(): '''完成对整个程序的控制''' while True: #2、获取用户的输入 reault =int(input("请输入你的选择:")) #3、根据用户的输入,执行相应的功能 if reault == 1: append_list() elif reault == 2: del_list() elif reault == 3: amend_list() elif reault == 4: in_list() elif reault == 5: show_list() elif reault == 6: break else: print("你输入的有误,请亲从新输入(1-5)谢谢亲的配合。。。") #调用主函数 main() # 运行结果 ================================================== 名片管理系统 8v.6 1、添加一个新的名片 2、删除一个名片 3、修改一个名片 4、查询一个名片 5、显示所有的名片 6、退出系统 ================================================== 请输入你的选择:1 请输入新的名字:李白 请输入新的qq:131231231 请输入新的weixin:21312312 请输入新的地址: 老街 ================================================== 请输入你的选择:5 名字 QQ 微信 住址 李白 131231231 21312312 老街 ==================================================
-
缺省函数
#这里默认的b == 22 如果你传了b的值就用传的那个值 缺省参数只能放在最后面 # b,c缺省参数 def test(a,b=22,c=33): print(a) print(b) print(c) test(11)#默认是一个个相对传递 print("*"*50) #c是命名参数 意思是给指定的形参赋值 test(22,c=44) print("*"*50) #命名参数 test(a=11,b=33,c=55) print("*"*50) # 运行结果 11 22 33 ************************************************** 22 22 44 ************************************************** 11 33 55 **************************************************
-
不定长参数一
def test(a,b,*args): print(a) print("*"*50) print(b) print("*"*50) print(args) #args把剩下的值当元组反回 print("*"*50) sum_value = 0 for temp in args: sum_value+=temp print(sum_value) print("="*50) # result = a+b # print("result=%d"%result) # print("*"*50) test(11,22,33,44,55,66,77) test(11,22,33) test(11,22) #test(11) 错误,因为 形参有2个 所以也至少要传递2个实参 args可以忽略 # 运行结果 11 ************************************************** 22 ************************************************** (33, 44, 55, 66, 77) ************************************************** 275 ================================================== 11 ************************************************** 22 ************************************************** (33,) ************************************************** 33 ================================================== 11 ************************************************** 22 ************************************************** () ************************************************** 0 ==================================================
-
不定长参数二
def test(a,b,c=33,*args,**kwargs): print(a) #必须传的a print(b) #必须传的b print(c) #可选的c print(args) #多余的没名字的以元组打印 print(kwargs) #多余的有名字以字典形打印 test(11,22,33,44,55,66,77,task=99,done=89) # 运行结果 11 22 33 (44, 55, 66, 77) {'task': 99, 'done': 89}
-
拆包,元组.字典
def test(a,b,c=33,*args,**kwargs): #这写*表示保留一些特殊的值 print(a) #必须传的a print(b) #必须传的b print(c) #可选的c print(args) #多余的没名字的以元组打印 print(kwargs) #多余的有名字以字典形打印 #test(11,22,33,44,55,66,77,task=99,done=89) A = (44,55,66) B = {'name':'laowang','age':18} test(11,22,33,A,B)#这里的A,B都传递给了args当成了元组,因为没有名字 print("*"*50) test(11,22,33,*A,**B) #这里的*是拆包元组 ,**是拆包字典 # 运行结果 11 22 33 ((44, 55, 66), {'name': 'laowang', 'age': 18}) {} ************************************************** 11 22 33 (44, 55, 66) {'name': 'laowang', 'age': 18}
-
引用
a = [11,22,33] #a指向了这个地址 b = a#b也指向了这个地址 a.append(44) print(a) print(id(a))#查看a的地址 print("***************************") print(b) print(id(b))#查看b的地址 # 运行结果 [11, 22, 33, 44] 4330477960 *************************** [11, 22, 33, 44] 4330477960
-
不可变.可变类型
''' 不可变: 数字 字符串 元组 可变: 列表 字典 字典的键必须是不可变类型 '''
-
递归
def fact(num): '''递归函数''' if num > 1: return num*fact(num-1) else: return num num = int(input("请输入一个数:")) number = fact(num) print(number) # 运行结果 请输入一个数:5 120
-
递归的问题
def test(): print("hahaha") ''' test() #死循环的递归''' test() # 递归必须要有结束条件
上一篇: python相关的函数知识
下一篇: 数论基础(浅谈数论的部分实现)