编程语言应用

首页 » 常识 » 问答 » Python3萌新入门笔记18
TUhjnbcbe - 2023/7/21 19:26:00
哪家医院治白癜风好 http://disease.39.net/yldt/bjzkbdfyy/

这一篇教程,我们来了解如何自定义函数。

在我们编程的过程中,往往要写一些进行某种运算的代码,通过这些代码获取我们想要的结果。

有时候,这些运算的代码,我们需要使用到多次,为了避免大量重复编写这些代码,我们可以把这些运算过程的代码定义为函数。

在第一篇教程中,我们见过下面这张图片,这张图片就是我们调用函数时要写入的内容。

那么,定义函数也必须包含这些内容。

另外,还要包含定义函数的关键字以及函数中运算过程的代码。

例如,我们定义一个获取身份证号中出生日期的函数。

示例代码:

defget_birthday(id):#定义函数名称并设定参数

birthday=id[6:14]#函数运算过程

print(birthday)#函数运算过程

get_birthday()#调用函数,显示输出结果为:

get_birthday()#调用函数,显示输出结果为:

通过上方的代码,大家能够看到,定义函数时的一些关键内容:

1、要使用def这个关键字进行定义。

2、函数的名称建议使用小写单词组成,单词间以下划线分隔(下划线命名法),这样比较方便理解函数名称的含义。

3、参数是一个自定义的变量名称,通常也是使用小写的单词,用于提示输入的参数内容。

4、定义参数名称与参数以“:”结尾。

5、在定义函数名称与参数的下方,向右缩进编写运算代码的语句块。

6、通过函数名称并写入相应的参数即可调用函数,以实现相应的运算。

不过,上方我们定义的函数,并没有返回结果,而是直接在函数运算过程中进行了显示输出。

如果,我们需要获取到的出生日期,再进行使用,我们需要修改一下这个函数。

示例代码:

defget_birthday(id):#定义函数名称并设定参数

birthday=id[6:14]#函数运算过程

returnbirthday#返回运算结果

b=get_birthday()#调用函数

print(您的出生日期是%s。%b)#显示输出结果为:您的出生日期是

对比一下我们刚才的两段定义函数的代码,大家能够看到,第二段代码中我们通过return关键字,返回了运算结果(如果不加入return语句,则函数默认执行returnNone,即函数返回结果为None)。

这样,我们就可以在调用函数时,通过一个变量(例如上方代码中的b变量)接收到这个结果,进行使用。

注意:retrun语句会跳出结束函数,并返回结果,该语句之后的语句将不再被执行。

—————————————————————————-

上面我们定义的函数,只返回了一个结果。

如果,我们想把身份证号码中出生日期的年、月、日分别获取到呢?

接下来,我们再修改一下这个函数。

示例代码:

defget_birthday(id):#定义函数名称并设定参数

year=id[6:10]#函数运算过程

month=id[10:12]#函数运算过程

day=id[12:14]#函数运算过程

returnyear,month,day#返回多个运算结果

y,m,d=get_birthday()#调用函数,将3个返回值存入3个变量

print(您的出生日期是%s年%s月%s日。%(y,m,d))#显示输出结果为:您的出生日期是年01月01日。

通过上面的代码,大家可以看到,我们可以通过return关键字,返回多个运算结果。

实际上,函数返回的仍然是1个运算结果。

我们再来看下方这段代码。

示例代码:

defget_birthday(id):#定义函数名称并设定参数

year=id[6:10]#函数运算过程

month=id[10:12]

day=id[12:14]

returnyear,month,day

birthday=get_birthday()#调用函数,返回结果存入变量

print(birthday)#显示输出结果为:(,01,01)

print(您的出生日期是%s年%s月%s日。%birthday)#显示输出结果为:您的出生日期是年01月01日。

通过上方代码,我们能够看到,我们可以通过1个变量接收函数的返回结果,这时我们得到的是1个包含了3个元素元组。

—————————————————————————-

在我们定义函数时,有些时候希望某些参数可以省略。

例如,我们通过身份证号码,获取出生日期或者年龄。

我们可以通过设定一个参数来控制函数如何返回结果。

示例代码:

defget_birthday(id,get_age=False):#定义函数名称并设定参数,get_age为关键字参数,默认值为False

ifget_age:#对参数进行判断

return-int(id[6:10])#返回计算公式的计算结果

else:

year=id[6:10]#函数运算过程

month=id[10:12]#函数运算过程

day=id[12:14]#函数运算过程

returnyear,month,day#返回多个变量值

result=get_birthday(,True)#调用函数,输入2个参数

print(result)#显示输出结果为:27

result=get_birthday()#调用函数,省略第2个参数

print(result)#显示输出结果为:(,01,01)

在上方这段代码中,我们新增了一个关键字参数,并为其设置默认值。

这样,我们在调用参数时,如果不填写第2个参数,一样可以执行函数。

此时,函数会读取第2个参数的默认值,参与运算过程。

如果,我们只定义参数而不写入默认值,即便函数运算过程中没有使用这个参数,程序也会抛出异常。

异常示例代码:

defget_birthday(id,get_age):#定义函数名称与参数

birthday=id[6:14]#函数运算过程

returnbirthday#返回运算结果

result=get_birthday()#调用函数,此时会抛出异常

异常信息:

异常提示中TypeError是类型错误,提示内容为:get_birthday()函数丢失了1个必须位置的参数’get_age’。

所以,我们在定义函数时,设定的参数如果没有设置默认值,则调用函数时必须填入该参数。

那么,设置默认值的参数我们叫它关键字参数,没有默认值的参数是位置参数。

关键字参数对位置没有要求,不管是设定参数还是调用函数时,可以任意顺序写入。

而位置参数必须有着严格的位置和顺序,这样才能在调用函数时一一对应。

正是因为这个原因,当参数中同时包含位置参数和关键字参数时,位置参数要放在所有关键字参数的前面。

大家可以尝试将位置参数放在关键字参数的后方,运行程序会抛出异常提示。

SyntaxError:non-defaultargumentfollowsdefaultargument

语法错误:无默认值参数跟随默认值参数(即位置参数在关键字参数后方)

—————————————————————————-

另外,我们定义的函数,往往对输入的参数有类型的要求,当输入了错误的类型,会有异常发生。

例如,我们定义一个减法运算的函数,参数为两个整数。

示例代码:

defsubtraction(num1,num2):#定义函数并设定参数

result=num1-num2#函数运算过程

returnresult#返回运算结果

print(subtraction(3,2))#调用函数,并显示输出结果:1。

上方代码中,我们调用函数时输入了两个整数,运行正常,得到了计算结果。

接下来,我们输入错误的参数,比如两个字符。

defsubtraction(num1,num2):#定义函数并设定参数

result=num1-num2#函数运算过程

returnresult#返回运算结果

print(subtraction(3,2))#调用函数,程序抛出异常。

上方的代码运行之后,程序抛出异常。

TypeError:unsupportedoperandtype(s)for-:‘str’and‘str’。

提示内容为类型错误,不支持的操作数类型:’str’和’str’。

也就是说,字符串类型的参数不能进行减法运算。

这是系统给出的提示,我们也可以自定义这个异常的提示。

我们知道减法可以支持整数与小数,所以我们在函数中可以判断传入的参数值是否这两种类型。

如果不是,则给出异常提示。

示例代码:

defsubtraction(num1,num2):#定义函数并设定参数

ifnotisinstance(num1,(int,float))\

ornotisinstance(num2,(int,float)):#判断参数是否指定类型,代码过长时可以使用\换行

raiseTypeError(参数类型错误,参数必须为整数或者小数。)#设定自定义异常内容

result=num1-num2#函数运算过程

returnresult#返回运算结果

print(subtraction(3,2))#调用函数,程序抛出异常。

上方代码中,我们使用内置函数isinstance()对输入的参数值进行类型的比较,当任何一个参数不是int(整数)或者float(小数)类型时,都将抛出异常。

关键字raise用于引发异常,TypeError()为异常类型,括号中可以输入自定义的异常提示。

—————————————————————————-

最后,在我们编写代码时,我们还可以定义空函数。

空函数一般是在还没有确定函数内部代码如何编写,但是又需要不影响程序运行时使用。

我们只需要在函数内容写入pass关键字即可。

示例代码:

defsubtraction(num1,num2):#定义函数并设定参数

pass#使用pass占位,保证程序运行正常

print(subtraction(1,2))#调用函数,返回结果为:None。

以上就是关于定义函数的内容。

关于字符串的相关操作就为大家介绍到这里,谢谢!

本节知识点:

1、定义函数;

2、设定函数返回结果;

3、设定函数返回多个结果;

4、设定参数与参数默认值;

5、参检查与自定义异常;

6、定义空函数。

本节英文单词与中文释义:

1、birthday:出生日期

2、year:年份

3、month:月份

4、day:日期

5、type:类型

6、error:错误

7、missing:丢失

8、required:必须

9、positional:位置

10、unsupported:不支持

11、operand:操作数

练习:

根据输入的手机号码返回运营商名称。

运营商号码列表:

mobile:[,,,,,,,,,,,,,,,,,,]

uni

1
查看完整版本: Python3萌新入门笔记18