python 中的函数
在编程中函数是必不可少的,函数对于代码的复用、编写都是有很大作用的。要善于利用函数,以减少重复编写程序段的工作量。
定义函数- 3 print("hello !")4 greet_user()
复制代码
上面我们定义了一个函数。def 是一个关键字,通过 def 关键字来告诉 python 接下来我们定义的是一个函数。蓝色部分代码为 文档字符串 ,描述了函数是做什么的,通过三引号括起,python 使用它们来生成有关程序中函数的文档。第三行是函数要做的操作。第四行是函数的调用。这个函数不需要任何信息,因此调用它是只需要输入函数名就可以了。
向函数传递信息- greet_user(username): """say hello""" print("hello," + username.title() + "!")greet_user('jack')
复制代码
在调用函数的时候传递一个参数,函数在定义的时候也要定义为需要传参的形式。
在函数传参的时候要注意 实参 和 形参 的区别,在这里我就不讲了,也讲不好,想复习的小伙伴可以去搜下。
关键字实参
函数调用的时候,实参的传递顺序要和实参保持一致,如果不保持一致的话可能会出现意想不到的问题。但是我们可以使用 关键字实参 的方法,使得顺序不必保持一致还可以正确的运行程序。- def greet_user(username , sex): """say hello""" print("hello," + username.title() + ", you are a " + sex)greet_user(sex = 'man', username = 'jack')
复制代码
实现的方法也很简单,只不过是明确的指出了各个实参对应的形参。
函数默认值
编写函数时,可给每个形参指定默认值。在函数调用时,给形参提供了实参时, python 将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略对应的实参。使用默认值可简化函数调用,还可清楚的指出函数的典型用法。(看官方文档的时候,我们会发现很多函数是提供默认参数的。)- def greet_user(username ,
复制代码- ): """say hello""" print("hello," + username.title() + ", you are a " + sex)greet_user(
复制代码
在上面的例子中,将 sex 的默认值设置为 "man" , 在函数调用的时候只传递了 username 这一个值就可以了。再看下面的例子- def greet_user(sex = "man" ,username): """say hello""" print("hello," + username.title() + ", you are a " + sex)#greet_user( username = 'jack')greet_user( 'jack')
复制代码
在这里就报错了,错误原因是缺少参数。和其他语言一样,在使用默认值的时候,在形参列表中要先列出没有默认值的形参,再列出有默认值的形参,这样可以使 python 正确解读位置实参。
函数返回值
调用函数可以处理一些数据并返回一个或一组值。函数返回的值被称为返回值。- def greet_user(first_name,last_name): """say hello""" full_name = first_name + " " + last_name return full_namemy_name = greet_user( 'jack',"cui")print(my_name)
复制代码
可选实参
有时候,我们需要让实参变成可选的,这样使用函数的人就只需要在必要时才提供额外的信息,可使用默认值使实参变成可选的。- middle_name: full_name = first_name + " "+ middle_name + " " + last_name
复制代码- : full_name = first_name + " " + last_name
复制代码
返回字典
函数可返回任何类型的值,包括列表和字典。- ':first_name,'last':last_name}
复制代码
笑对人生,能穿透迷雾;笑对人生,能坚持到底;笑对人生,能化解危机;笑对人生,能照亮黑暗。
禁止函数修改列表
我们将列表作为函数的参数进行传递的时候,如果在函数里面列表被修改了,那么这个列表也就真正的被修改了,但是有时候我们既想完成我们的操作,又想列表保持原来的样子,这个时候可以用切片的方法来实现。- fuction_name(list_name[:])
复制代码 在这里,切片创建了列表的副本。这样函数依旧可以完成工作,而且使用的是列表的副本,而不是列表本身,函数对列表所作的操作不会影响到原列表。
传递任意数量的实参
有些时候,我们预先并不知道函数需要接收多少个实参,但是 python 已经为我们想到了这点。形参名 *name 中的 * 让 python 创建了一个名为 name 的空元组,并将说到的所有值都封装到这个元组中。这里虽然没有 for 循环语句,但是 print 依旧输出了我们定义的每个元组元素。
如果我们要接受不同类型的实参,必须要将接收任意数量实参的形参放到后面。就像下面这样。使用任意数量的关键字实参
有时候需要接受任意数量的实参,但是预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键-值对。调用语句提供了多少就接受多少。
形参 **user_info 中的两个 ** 让 python 创建了一个名为 user_info 的空字典。剩下的部分自己就自己理解了,仔细看,不明白就多看。
python 中的模块
函数的优点之一是,可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解很多。我们还可以更近一步,将函数存贮在被称为 模块 的独立文件中,再将模块导入到主程序。 可以使用 import 语句在当前运行的程序文件中导入模块中的函数。
导入模块
我们先来创建一个模块,模块的扩展名是 .py 的文件,包含要导入到程序中的代码。
接下来我们将这个模块导入。
要调用被导入的模块中的函数,可指定导入的模块的名称和函数名,中间用 点号 “.” 隔开。
导入特定的函数
我们可以导入模块中特定的函数。- form module_name import fuction_name0,fuction_name1,fuction_name2
复制代码 使用 from 的方法在调用函数的时候无需使用 点号。
给函数指定别名
如果要导入的函数的名称和本程序中的现有的函数名称冲突,或者名字太长使用不方便,我么可以给它起一个别名。- form module_name import fuction_name0 as name0
复制代码 同理,我们也可以给模块起别名我们可以一次性的导入模块中的所有函数。- from module_name import *
复制代码 使用这种方法可以一次性的将模块中的所有方法导入到本文件中,而且在调用的时候不必使用 点号 。但是不推荐使用这种方法,一位在编写大型程序时,自己程序中的方法名难免和模块中的方法名重复,会出现意想不到的错误。
昨天没有更新,今天补上,来一个长的好吧。
喜欢记得来一个好看
|
|