Python趣味入门9:函数是你走过的套路,详解函数、调用、参数及返回值

琼恩·雪诺成为守夜人指挥官后,为了训练士兵对付僵尸,他安排了一系列动作,成功地将僵尸杀死成了一种功能,这是一种功能。同样,在计算机世界中,一系列连续的计算机语句称为函数。本章主要介绍如何在程序中定义和使用函数。

[En]

After Jon Snow became the commander of the night watchman, in order to train soldiers to deal with zombies, he arranged a series of actions to successfully kill zombies into “sunflower swordsmanship”, which is a function. Similarly, in the computer world, a series of consecutive computer statements are called functions. This chapter mainly introduces how to define and use functions in programs.

有了函数后,当要用到相同功能时,我们就可以重复地调用它而不用重写代码。下面是琼恩·雪诺用来上报战况的程序,每杀死1鬼,通信员可以敲kill_dead(),而不用反复敲print()语句了。

如下定义了 kill_dead函数,用来上报战况

def kill_dead():
    print('杀死异鬼1头')

上面def语句定义了函数kill_dead,函数名可以由写程序的人命名,必须以字母开头,紧跟圆括号,函数内的语句都必须多缩进4个空格。

例如print()是系统内置的函数,要显示文字时我们把文字放进括号里,这就是函数的参数。定义函数时我们也可以接受参数。
调用时分为位置参数和关键字参数。

[En]

When calling, it is divided into position parameters and keyword parameters.

2.1 参数调用方式

我们来完善这个”战况通报程序”,把英雄的名字和战斗业绩也加上。

如下定义了 kill_dead函数,用来上报战况

  • name: 表示人名变量,
  • number:表示战绩变量
def kill_dead(name,number):
    print(name,'杀死异鬼',number,'头') #逗号分隔参数显示

这是主程序(没有缩进)

kill_dead('Snow',2) #位置参数调用
kill_dead(name='Sam',number = 1) #关键字参数调用
kill_dead('Guido',number = 1) #位置+关键字参数调用

运行上述程序将显示以下结果:

[En]

Running the above program displays the following results:

Snow 杀死异鬼 2 头
Sam 杀死异鬼 1 头
Guido 杀死异鬼 1 头

第1行语句是位置调用,第2行语句是关键字调用方式,第3行是混合方式。

2.2 参数的默认值

上述播报战况的程序中,我们认为number(数量)每回填上比较麻烦,因为90%的的情况都是1,除了Snow偶尔会杀死2个。这我们就可以使用默认值,而不是每次都填。默认值可以使用等号写在参数变量后面,如下:

如下定义了 kill_dead函数,用来上报战况

  • name: 表示人名变量,
  • number:表示战绩变量
def kill_dead(name,number=1):
    print(name,'杀死异鬼',number,'头') #显示
  • 默认值数量为1,可以不填数量
    kill_dead('小牛叔')

小牛叔杀死了1位,运行结果呢?

小牛叔 杀死异鬼 1 头

说明: 有默认值的参数变量,叫可选参数;没有默认值的参数,叫必选参数,可选参数定义时必须放在右侧。

2.3 参数的运算和*运算

特殊情况出现了,假设兵甲、兵乙…兵N同时杀死了1个敌人,这时的参数数量不固定怎么办?可以使用运算,把所有的位置参数”压缩”成一个元组变量;此外,还可以使用*运算,把所有的关键字参数”压缩”成一个字典。用法如下:

  • *names: 基于位置参数元组,表示的人名变量,
  • **killed:基于关键字参数的字典,表示目标和数量
def group_kill(*names,**killed):
    print(names,'杀死',killed['target'],killed['number'],'头') #显示

张王被压缩成元组存在names,后面被组装进字典killed里。

group_kill('张','王',number=2,target='异龙')

运行结果:

('张', '王') 杀死 异龙 2 头

类似于input()输入函数可以返回用户输入的字符串结果,我们定义的函数也有返回值,返回值使用return语句。

假设赏金猎人按照杀死的敌人数量,每人得到前50枚金币,每条龙收到500枚金币,两人三龙的奖励计算程序如下:

[En]

Suppose a bounty hunter will receive the first 50 gold coins per person and 500 gold coins per dragon from the night watchman according to the number of enemies killed, and the program for calculating the reward for two people and three dragons is as follows:

def money(dead:int,drag:int)->int:
    return (dead*50 + drag*500)

运行如下:

print('2人3龙的赏金为:',money(2,3))

在本程序里,我们在参数后使用了:int,函数后使用了->int,其实这表示参数是整数,返回值是整数,加了会使程序更加好理解,不强制要求添加。

运行后的结果如下:

2人3龙的赏金为: 1600

Original: https://www.cnblogs.com/dosboy/p/dosboy_learn_python_9.html
Author: dosboy
Title: Python趣味入门9:函数是你走过的套路,详解函数、调用、参数及返回值

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499479/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球