python中的函数(入门)
无论学习哪一门编程语言,都会有这样一个知识点需要学习,它就是函数 。对于很多初学者来说,前面的顺序 、分支 、循环 结构再加上前面我们学习的容器型数据类型等知识点,实际上对于解决一般的代码已经够用了。那为什么还要学习函数这样难理解也似乎做’无用功’的编程语法呢?在回答这个问题,我们先来看一个简单的例子。
写一个实现生成指定长度的随机验证码(有数字和英文字母构成)的函数,生成10组随机验证码
使用前面学习的分支与循环等知识,我们先来写这个代码。
import random
rang ='1234567890abcdefghijklmnopqrstuvwsyzQWERTYUIOPASDFGHJKLZXCVBNM'
for _ in range(10):
result = random.choices(rang,k=4)
print(' '.join(result))
但是,要是需求改变了,我们需要产生20组这样的验证码,并于要将代码中循环的10改为20,单单这样一段代码,你可能并不觉得改起来麻烦,但是,若需求改变为,产生20组长度为6的验证码,再产生30组长度为5的验证码…这时候,不止是需要改代码,而且还需要复制粘贴代码,复制多了后代码不但容易在开发时产生各种各样的问题,而且可读性并不好,可见,这样的代码,通用性并不好,使用起来也不方便,还容易出bug,特别是用户的需求频繁发生改变时,用这样的代码简直是噩梦。那么接下来再看看这样的代码。
def captcha(n,m):
for _ in range(n):
ran = string.digits + string.ascii_letters
result = random.choices(ran,k=m)
return ' '.join(result)
captcha(10,4)
这样做后,如果用户想要生成20组长度为6的验证码,就将captcha(10,4)中的10改为20,4改为6,再要产生30组长度为5的验证码时,只需要再调用一次这个函数,输入30,5就行,即使用户再改需求,最坏情况下也最多只需要重写这个函数,并不需要去到处修改代码,可见,特别实在做工程化开发时,使用这样的代码一定是人见人爱的,而且一劳永逸。
那么,我们就来看看,这样功能强大的的函数怎样去实现。
什么是函数
实际上,编程中的函数跟数学上的函数也是很相似的东西,数学中的函数y = x ,是输入一个自变量x,然后它经过计算后,能给你返回一个对应的因变量y的东西。而编程语言中的函数也是这样一个东西,不同的是,这样的函数有时后不需要传入自变量(这样的自变量叫参数),可以传入一个自变量,有些时候需要传入多个自变量(参数),而它也可能不返回因变量或返回一个或多个因变量(返回值),这些特点使得它用起来是非常灵活的,这是它的优点。这因为这些特点实现了它的可重用性可通用性。怎样定义一个这样的函数?
函数的定义
在上面的例子中,相信大家已经发现了,实际上再将之前写的代码包装成一个函数时并没有改变多少代码,而只是在原来的代码基础上加了关键字def,然后又写了一个名字加上一个(),这个加上的名字就是给函数取的一个名字,然后函数里面基本就是原来的代码,最后将要输出的结果再加上了一个return关键字,去掉了print().所以说,实际上要将一段已经写好的代码包装成一个函数并不困难。下面看一些语法和简单举的举个例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LFjjihp-1628089850762)(D:\CsdnPhoto\函数.png)]
前面的关键字def 用来定义一个函数(告诉别人定义的是一个函数),给函数一个名字(后面还会讲到另一种函数lambda函数,不需要函数名),参数相当于自变量,可以传入一个或者多个,也可以没有,看情况而言,参数可以是任意数据类型,定义时只需要写入参数名就行并不需要像java那样写参数类型。冒号:必须要有,return是返回因变量准确来说叫函数的返回值的关键字,也可以不用return返回因变量,可用print()但是不推荐,因为这样的函数是高耦合 的,这样还会让调用者(使用函数的人)不知所措,他在选择使用函数时不能很清楚的知道此函数到底能返回什么样的结果。在两行代码之间的其他代码就是你要实现的功能代码,叫函数的函数体。
定义一个既没有参数也没有返回值的函数
def f():
pass
f()
定义一个没有参数,有返回值的函数
def add():
return 'hello, world'
a = add()
print(a)
定义一个对列表中的元素求和的函数
def sum(nums):
total = 0
for num in nums:
if type(nums) in (int,float):
total += num
return total
函数的创建就是这样简单,接下来,让我们看一些怎么调用这样的函数吧!
函数的调用
去使用一个函数在编程语言中叫做调用 这个函数,我的理解是因为我们在使用这个函数时只是用它来解决相应的问题,但是我们达到目的后并不再需要(至少暂时不需要了)用它了,因此,不说使用这个函数,而说调用这个函数或方法(借用一下就还回去了)。
函数的调用也非常简单,python内置的函数或者我们现在写的这种函数,我们只需要直接在函数外下写出函数名,函数传入所需要的参数就实现了函数的调用了,如果函数有返回值,需要先用一个变量去接收,然后输出这个返回值,或者使用print(函数名(参数))也同样可以输出返回值。(后面还会讲到面向对象程序设计的对象的方法的调用,这里先学会简单的函数调用)
例子:
1.调用前面的对列表中的元素求和的函数。
def sum(nums):
total = 0
for num in nums:
if type(nums) in (int,float):
total += num
return total
list1 = [1,5,6,7,8]
print(sum(list1))
现在再回去看文章开头的实例代码是不是豁然开朗了呢?赶紧去试试吧!
现在再回去看文章开头的实例代码是不是能够理解了呢?赶紧去试试吧!
如果对你有帮助,不要忘记点赞、关注、评论加收藏哦!
|