使用d:返回ab#)在括号内。调用下面的printadd(1,2)。
python有一个所有对象的哲学,哪个函数实际上是一个对象,哪个默认参数实际上存储在函数对象上。调用函数时,发现参数没有传递时,就去函数中保存默认值的地方查询,也就是使用默认值。祝你好运。
复制代码count0deffuc(count):printcount1foriinrang:fuc(count)复制代码结果是:不是我们想要的。解决方案1-全局变量:复制代码globalaa3defuc():globalprintaa1if__nam
首先,定义一个最简单的函数
def用于函数定义,必须有函数名和函数体。下图中,函数名为sayhello,函数体为打印语句。函数只有被调用才会被执行,函数名以圆括号的形式调用,即sayhello()。
二、函数的参数
1.位置参数
position参数是必需的,如果在调用函数时没有传递,将会给出错误。
我们写一个简单的函数来实现计算乘法的功能。下图中的a和b是位置参数。
a和b称为形参,即形式参数。调用函数calc时,传递的7和8称为实参,即实际参数。
我们可以看到,在传递参数时,7传递给a,8传递给b,也就是说,传递参数的顺序不能错。然后,当参数很多的时候,很难准确记住每个参数的位置,很容易出错。您可以以形式参数和真实参数的形式传递参数。
例如,操作数据库的函数。参数传递顺序不对,采用端口3306,非常适合多参数函数。
d:打印(连接数据库:%s,主机:%s,端口:%s%(数据库,主机,端口))打印(%s,其中用户名%s和密码%s%(sql,用户名,密码))op_mysql(sqlselect*from用户,主机192.158.11.1,用户名dfsfs,passwordsdf123,dbtest_data,port3306)运行结果如下:
2.默认值参数
不需要默认值参数。如果留空,将使用默认值。
例子:写一个函数,实现读写文件的功能。
#函数来操作文件。如果传递了content参数,相应的内容将被写入文件。读取文件的原始内容,而不传输内容。defop_file(file_name,cont:fopen(file_name,a,编码utf-8)(0)如果cont:#不为空,表示写f.write(cont:r:的字符串if(。)1:离开了s(。)[0]#十进制左右s拆分(。)[1]#小数右if()和()。:返回tru:返回tru:返回fals:返回falsenuminp。ut(请输入:)resis_float(num)print(res)3。参数组。
参数组的参数用"*args"。参数组特性:(1)不需要参数;(2)参数个数没有限制;(3)将传递的参数放入args参数中,没有任何格式。
如果函数定义为defaaa(a,*args),那么a是必需的参数,而*args不是必需的。
4.关键字参数
关键字参数用"**kwargs"。特点:(1)不需要参数;(2)参数个数没有限制;(3)传递的参数必须是字典格式。
同样,如果defaaa(time,**kwargs),则必须传递时间参数。其中time20180912是第一个参数time的值,所以没有输出kwargs的时间。
第三,局部变量和全局变量
1.局部变量
函数中定义的变量都是局部变量,只能在函数中使用,不能在函数外使用。
例如,在第二个练习中,left和right是局部变量,以确定它们是否是小数的函数。
2.全局变量
全局变量是公共变量,可以被所有人使用。一般不建议使用全局变量,因为它们有以下两个缺点:(1)不安全,因为每个人都可以更改它们;(2)会一直占用内存。
要修改一个全局变量,需要先声明它,并用global声明。
下图中,name是一个全局变量,需要在修改前声明:全局名称。
第四,内置功能
内置函数是python自带的一些函数,有很多,比如:
动词(verb的缩写)递归
递归意味着函数调用自己。
建议少用递归,因为递归效率低,最多递归999次。递归次数的上限可以通过下面的函数直观地看到。
第六,函数的返回值
回归之前已经简单介绍过了。return有两个作用:(1)调用函数后返回结果;(2)当函数中遇到return时,立即结束。
有些函数有多个返回值。如果函数返回多个值,它会将这些值放入一个元组中。此外,它还可以接收多个值。
示例:
七、匿名功能
匿名功能的作用很简单,只用一次。匿名函数定义如下。
用lambda定义一个匿名函数,返回值在冒号前面,函数体在后面,这是函数的处理逻辑。
也就是参数是x,然后执行x1返回x的值。
——河南新华。