c语言sscanf函数的用法是什么
252
2022-09-03
Python总结,定义函数(3)
目录
定义一个函数
自定义错误输出默认输出不定长参数
一个*代表元组两个*代表字典单独写`*`代表`*`后的参数必须用关键字传入
不可变类型在函数中值不会被改变
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回,请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号 : 起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
自定义错误输出
我们自己定义的函数错误与内置函数输出错误不一样
比如下面定义一个my_abs等于abs,输出错误看下 自定义求绝对值函数:
def my_abs(x): if x > 0: return x else: return -xprint(my_abs('9')) #填入字符串
输出错误:
Traceback (most recent call last): File "C:/Users/Eden/PycharmProjects/pythonProject1/main.py", line 7, in
内置绝对值函数:
print(abs('9'))
输出错误:
Traceback (most recent call last): File "C:/Users/Eden/PycharmProjects/pythonProject1/main.py", line 1, in
如果想自定义错误输出,就可以使用数据类型检查内置函数isinstance()实现:
def my_print(x,y,z): if not isinstance(x,(int,float)): raise TypeError('类型输入错误,请输入int或者float类型') nx = y + z ny = x + z nz = x + y return nx,ny,nzprint(my_print('1','2','3'))
输出错误:
Traceback (most recent call last): File "C:/Users/Eden/PycharmProjects/pythonProject1/main.py", line 8, in
默认输出
必选参数在前,默认参数在后,当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
当不给z赋值时,默认z等于3
def my_print(x,y,z=3): if not isinstance(x,(int,float)): raise TypeError('类型输入错误,请输入int或者float类型') print(x,y,z) return x,y,zprint(my_print(100,200)) #不给z赋值,输出:100,200,3
不定长参数
一个*代表元组
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
实例(Python 3.0+)#!/usr/bin/python3 # 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数" print ("输出: ") print (arg1) print (vartuple) # 调用printinfo 函数printinfo( 70, 60, 50 )
以上实例输出结果:
输出:
70(60, 50)
如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例:
实例(Python 3.0+)#!/usr/bin/python3 # 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数" print ("输出: ") print (arg1) for var in vartuple: #遍历元组 print (var) return # 调用printinfo 函数printinfo( 10 )printinfo( 70, 60, 50 )
以上实例输出结果:
输出:
10输出:706050
还有一种就是参数带两个星号 **基本语法如下:
def functionname([formal_args,] **var_args_dict ): "函数_文档字符串" function_suite return [expression]
两个*代表字典
加了两个星号 ** 的参数会以字典的形式导入。
实例(Python 3.0+)#!/usr/bin/python3 # 可写函数说明def printinfo( arg1, **vardict ): "打印任何传入的参数" print ("输出: ") print (arg1) print (vardict) # 调用printinfo 函数printinfo(1, a=2,b=3)
以上实例输出结果:
输出:
1{'a': 2, 'b': 3}
单独写*代表*后的参数必须用关键字传入
def f(a,b,*,c): return
如果单独出现星号 * 后的参数必须用关键字传入。
>>> def f(a,b,*,c):... return a+b+c... >>> f(1,2,3) # 报错Traceback (most recent call last): File "
不可变类型在函数中值不会被改变
int类型是不可变类型,列表是可变类型,所有下面的例子中n1的值没有被修改
def fun(a,b): a = 3 b.append(10)n1 =1n2 =[8,9]fun(n1,n2)print(n1,n2)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~