小朋友们,除了上面这种需要传“原材料”(参数)的函数,函数家族还有三个“小伙伴”,它们各有各的本领,我们一起来认识一下,再动手写几个简单示例,一下子就能学会!
无参函数,就是不需要传任何“原材料”(括号里是空的),只要调用它,它就会自动完成任务的工具。就像我们按一下开关,电灯就会亮,不需要给电灯递东西一样~# 无参函数示例:打印一句问候语defsay_hello(): # 括号里是空的,没有参数,就是无参函数 print("小朋友们好呀!我是无参函数,不用传参数也能工作~")# 调用无参函数:直接写函数名+括号,不用传任何东西say_hello()# 运行结果:小朋友们好呀!我是无参函数,不用传参数也能工作~
小提醒:无参函数的括号不能少哦,哪怕里面没有内容,写say_hello()才是调用,写say_hello是没用的~之前我们写的number_transform(num)只有1个参数,而多参函数,就是需要2个或更多“原材料”才能工作的工具。比如我们做水果沙拉,需要苹果、香蕉、草莓多种水果,多参函数就像做沙拉的工具,要传多个“原材料”才行~# 多参函数示例:计算三个数字的总和defadd_three_num(a, b, c): # 括号里有3个参数,就是多参函数 sum_result = a + b + c # 用三个参数做加法 return sum_result # 返回计算结果# 调用多参函数:要按顺序传3个“原材料”,用逗号隔开result1 = add_three_num(10, 20, 30)result2 = add_three_num(5, 15, 25)print("10+20+30的结果是:", result1)print("5+15+25的结果是:", result2)# 运行结果:# 10+20+30的结果是: 60# 5+15+25的结果是: 45
小技巧:调用多参函数时,参数的顺序要和定义时一致哦,不然会算错结果~这种函数更灵活啦!它的参数有一个“默认值”,就像商店里的商品有默认数量,你可以直接买默认的,也可以自己指定数量。调用时,不想传这个参数,就用默认值;想传,就用自己的数值~# 参数带默认值的函数示例:买文具defbuy_stationery(name, num=1): # num=1就是参数的默认值 print(f"你买了{num}个{name},一共花了{num*2}元(每个2元)~")# 调用方式1:只传第一个参数,第二个用默认值(num=1)buy_stationery("铅笔")# 调用方式2:传两个参数,覆盖默认值(num=5)buy_stationery("笔记本", 5)# 运行结果:# 你买了1个铅笔,一共花了2元(每个2元)~# 你买了5个笔记本,一共花了10元(每个2元)~
小重点:带默认值的参数,要放在所有无默认值参数的后面哦,比如def buy_stationery(num=1, name)是错的,一定要把name(无默认值)放在前面~小朋友们,你们有没有自己的小房间?房间里的玩具,只有你能随便玩,别人不能随便碰;而客厅里的玩具,全家人都能玩。变量也一样,有自己的“活动范围”,这就是变量作用域。我们结合两个超简单的代码示例,一看就懂!
局部变量就是在函数里面定义的变量,就像你房间里的专属玩具,出了自己的房间(函数),别人就找不到它、用不了它啦,一旦走出房间,它就“消失”咯~# 定义一个函数,里面放一个“房间里的玩具”(局部变量)defmy_room(): toy = "乐高积木" # toy是局部变量,只属于my_room这个“房间” print("我房间里有:", toy) # 在房间里,能找到玩具# 调用函数,看看房间里的玩具my_room()# 尝试在“房间外”(函数外)找这个玩具print("客厅里能找到玩具吗?", toy)
运行结果:会报错!提示“name 'toy' is not defined”(找不到toy这个变量)。小解释:toy是在my_room函数里定义的局部变量,只能在这个函数里用,出了函数就“失效”了,所以外面打印toy会报错哦~全局变量是在所有函数外面定义的变量,就像客厅里的公共玩具,不管是你的房间、弟弟妹妹的房间(各个函数),都能找到它、使用它~# 在所有函数外面定义一个“客厅里的玩具”(全局变量)living_room_toy = "遥控汽车" # 全局变量,属于整个程序# 第一个函数(你的房间),使用客厅玩具defmy_room(): print("我去客厅拿玩具:", living_room_toy) # 能找到全局变量# 第二个函数(妹妹的房间),也使用客厅玩具defsister_room(): print("妹妹去客厅拿玩具:", living_room_toy) # 也能找到全局变量# 调用两个函数,看看能不能用到客厅玩具my_room()sister_room()# 直接在“客厅”(函数外)打印玩具print("客厅里的玩具是:", living_room_toy)
我去客厅拿玩具: 遥控汽车妹妹去客厅拿玩具: 遥控汽车
客厅里的玩具是: 遥控汽车
小拓展(简单了解即可):如果想在函数里修改全局变量,需要加一句“global 变量名”(比如global living_room_toy),就像告诉家人“我要把客厅的玩具换成别的啦”,这样所有地方都能看到修改后的玩具哦~