网站建设课程有哪些收获,建设团队网站,网络知识,自建网站的优缺点函数
函数是组织好的#xff0c;可重复使用的#xff0c;用来实现单一#xff0c;或相关联功能的代码段。
函数能提高应用的模块性#xff0c;和代码的重复利用率。你已经知道Python提供了许多内建函数#xff0c;比如print()。但你也可以自己创建函数#xff0c;这被叫…函数
函数是组织好的可重复使用的用来实现单一或相关联功能的代码段。
函数能提高应用的模块性和代码的重复利用率。你已经知道Python提供了许多内建函数比如print()。但你也可以自己创建函数这被叫做用户自定义函数。
1.创建和使用
你可以定义一个由自己想要功能的函数以下是简单的规则
函数代码块以 def 关键词开头后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号 : 起始并且缩进。 return [表达式] 结束函数选择性地返回一个值给调用方不带表达式的 return 相当于返回 None。 2.函数的运行机制
函数的运行遵循以下机制
1. 从函数调用开始执行
2. 通过函数名字找到函数定义的位置创建函数的位置
3. 执行函数体
4. 执行完毕之后返回到函数的调用处3.函数的使用
举例用函数对古诗《登鹳雀楼》进行逐行打印并对每一行下面增加由多个相同符号组成的分割线。
def fun2(a, n):print(a * n)# 打印古诗
print(白日依山尽)
fun2(, 5)
print(黄河入海流)
fun2(-, 10)
print(欲穷千里目)
fun2(*, 15)
print(更上一层楼)
fun2(/, 20)执行结果
白日依山尽黄河入海流
----------
欲穷千里目
***************
更上一层楼
////////////////////4.函数的特点
通过上面的例子可以发现函数具有以下特点
1. 避免了代码的冗余
2. 提高了代码的可维护性
3. 提高了代码的可重用性
4. 提高了代码的灵活性5.函数的参数
函数的参数首先要明白以下四个概念
必需参数关键字参数默认参数不定长参数
必需参数 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 printme() 函数你必须传入一个参数不然会出现语法错误
#可写函数说明
def printme( str ):打印任何传入的字符串print (str)return# 调用 printme 函数不加参数会报错
printme()以上实例输出结果
Traceback (most recent call last):File test.py, line 10, in moduleprintme()
TypeError: printme() missing 1 required positional argument: str关键字参数 关键字参数和函数调用关系紧密函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名
#可写函数说明
def printme( str ):打印任何传入的字符串print (str)return#调用printme函数
printme( str 学习人)以上实例输出结果
学习人以下实例中演示了函数参数的使用不需要使用指定顺序
#可写函数说明
def printinfo( name, age ):打印任何传入的字符串print (名字: , name)print (年龄: , age)return#调用printinfo函数
printinfo( age50, namerunoob )以上实例输出结果
名字: runoob
年龄: 50默认参数 调用函数时如果没有传递参数则会使用默认参数。以下实例中如果没有传入 age 参数则使用默认值 #可写函数说明
def printinfo( name, age 35 ):打印任何传入的字符串print (名字: , name)print (年龄: , age)return#调用printinfo函数
printinfo( age50, namerunoob )
print (------------------------)
printinfo( namerunoob )以上实例输出结果
名字: runoob
年龄: 50
------------------------
名字: runoob
年龄: 35不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数和上述 2 种参数不同声明时不会命名。基本语法如下
def functionname([formal_args,] *var_args_tuple ):函数_文档字符串function_suitereturn [expression]加了星号 * 的参数会以元组(tuple)的形式导入存放所有未命名的变量参数。
# 可写函数说明
def printinfo( arg1, *vartuple ):打印任何传入的参数print (输出: )print (arg1)print (vartuple)# 调用printinfo 函数
printinfo( 70, 60, 50 )以上实例输出结果
输出:
70
(60, 50)如果在函数调用时没有指定参数它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例 # 可写函数说明
def printinfo( arg1, *vartuple ):打印任何传入的参数print (输出: )print (arg1)for var in vartuple:print (var)return# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )以上实例输出结果
输出:
10
输出:
70
60
50还有一种就是参数带两个星号 **基本语法如下
def functionname([formal_args,] **var_args_dict ):函数_文档字符串function_suitereturn [expression]加了两个星号 ** 的参数会以字典的形式导入。
# 可写函数说明
def printinfo( arg1, **vardict ):打印任何传入的参数print (输出: )print (arg1)print (vardict)# 调用printinfo 函数
printinfo(1, a2,b3)以上实例输出结果
输出:
1
{a: 2, b: 3}声明函数时参数中星号 * 可以单独出现例如:
def f(a,b,*,c):return abc如果单独出现星号 *则星号 * 后的参数必须用关键字传入 def f(a,b,*,c):
... return abc
... f(1,2,3) # 报错
Traceback (most recent call last):File stdin, line 1, in module
TypeError: f() takes 2 positional arguments but 3 were givenf(1,2,c3) # 正常
6匿名函数
Python 使用 lambda 来创建匿名函数。
所谓匿名意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式函数体比 def 简单很多。lambda 的主体是一个表达式而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。lambda 函数拥有自己的命名空间且不能访问自己参数列表之外或全局命名空间里的参数。虽然 lambda 函数看起来只能写一行却不等同于 C 或 C 的内联函数后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法 lambda 函数的语法只包含一个语句如下
lambda [arg1 [,arg2,.....argn]]:expression设置参数 a 加上 10:
实例
x lambda a : a 10
print(x(5))以上实例输出结果
15以下实例匿名函数设置两个参数
sum lambda arg1, arg2: arg1 arg2# 调用sum函数
print (相加后的值为 : , sum( 10, 20 ))
print (相加后的值为 : , sum( 20, 20 ))以上实例输出结果
相加后的值为 : 30
相加后的值为 : 40我们可以将匿名函数封装在一个函数内这样可以使用同样的代码来创建多个匿名函数。
以下实例将匿名函数封装在 myfunc 函数中通过传入不同的参数来创建不同的匿名函数
实例
def myfunc(n):return lambda a : a * nmydoubler myfunc(2)
mytripler myfunc(3)print(mydoubler(11))
print(mytripler(11))以上实例输出结果
22
336.函数的文档
写代码的时候我们经常需要写文档前面有提过#和三引号可以进行代码的注释但在这里要介绍一种新的方法也是写代码时常用的函数文档书写格式在函数体的第一行用 “” “” 进行文档说明这是标准化的函数文档书写。
例如
拥有函数说明文档之后就可以获取函数的文档内容方法是
函数名.__doc__例如 除此之外还可以用 help(函数名) 的方式进行函数文档的查看例如 7.函数的返回值
关键字return
返回值谁调用就返回给谁
1. 任何函数都有返回值
2. 如果不写return 也会默认加一个return None
3. 如果写return 不写返回值 也会默认加一个None
4. 可以返回任何数据类型
5. return后面的代码不在执行代表着函数的结束持续更新