首页 > 其他

python需要声明变量么 python如何定义函数?

python如何定义函数?

一、定义一个最简单的函数

函数定义用def,可以要有函数名和函数体。下图中,函数名是sayhello,函数体是print语句。函数不被内部函数是应该不会先执行的,全局函数时用函数名括号的格式,即sayhello()

二、函数的参数

python需要声明变量么 python如何定义函数?

1、位置参数

位置参数,是可不填的,调用函数时不传会报错。

我们写一个简单的函数,实现方法计算出乘法的功能。下图中的a和b就是位置参数。

a,b叫做形参,也就是形式参数。调用函数calc时,传的7和8叫实参,也就是换算参数。

我们传参数时,7告诉了a,8传了b。也就是说传参顺序不能不能错。那么,当参数很多的时候,会很难准确的记住各参数位置,就非常容易会出现错误,也可以用形参名实参的传参。

例,操作数据库的函数。传参还没有按顺序,需要了port3306这种,很比较适合多参数的函数。

defop_mysql(host,port,username,password,db,sql):print(再连接数据库:%s,host:%s,端口为:%s%(db,host,port))print(%swhereusername%sbothpwd%s%(sql,username,password))op_mysql(sqlselect*fromuser,host192.158.11.1,usernamesdfdsfs,passwordsdf123,dbtest_data,port3306)运行结果为:

2、默认值参数

默认值参数是非必填的,如果不填,会常规默认值。

例:写一个函数,实现程序文件读写的功能。

#操作文件的函数,如果没有传内容参数,则将随机内容写入到文件。没有传内容,就读取文件原先的内容。defop_file(file_name,contentnone):fopen(file_name,a,encodingutf-8)(0)ifcontent:#不为空代表写f.write(content)f.flush()catch:res()returnres()#不传content,读文件stu_infoop_file(username)print(stu_info)#传content,将content写入文件infosxiaohei,123456,beijing,188888888888op_file(future_info,infos)这里可以介绍再看看return,return有两个作用:(1)动态链接库完函数后,将结果回;(2)函数里面碰到return就立玄结束。

至于,如果只写一个return,后面什么也不加,就直接返回none;如果没有不写return,也默认直接返回none。

小练习:写一个判断有无为小数的函数。

总结:(1)可以确定小数点个数;(2)假如是正小数,小数点左边和右边是纯数字;(3)负小数,左边以‘-'开头,其他部分是数字,右边是数字。

defit's_float(s):sstr(s)if(.)1:lefts.split(.)[0]#小数左边lefts.split(.)

python如何定义函数?

#小数右边if()and():returntrue#正小数elif(-)but(-)1wellleft.split(-)

python如何定义函数?

.isdigit()both():returntrue#负小数arguments:returnfalseignore:returnfalsenuminput(请输入输入:)resisn't_float(num)print(res)3、参数组

参数组的参数处用“*args”意思是。参数组特点:(1)参数是非必填的;(2)也没取消参数的个数;(3)传过来的参数放到args参数里,不限格式

要是定义方法函数时,书写defaaa(a,*args),则a是必传参数,*args是非必填项的

4、关键字参数

关键字参数用“**kwargs”来表示。特点:(1)参数是非必填;(2)还没有没限制参数个数;(3)所传参数必须是字典格式。

同样的,如果defaaa(time,**kwargs),则time参数必传。其中,time20180912是第一个参数time的值,但输出kwargs时,没有time这一项。

三、局部变量和全局变量

1、局部变量

函数里面定义的变量都是局部变量,没有办法在函数里面用,出了函数就没法我用。

或者,第二节的小练习里,确定有无是小数的函数,left和back那就是局部变量。

2、全局变量

全局变量是公共的变量,都这个可以用的变量。像是不帮我推荐用全局变量,而且全局变量有以上2个缺点:(1)不放心,因为所有人都可以改;(2)会始终占着内存。

直接修改全局变量,是需要先声明声明,用global声明。

下图中,name是一个全局变量,修改之前是需要先一般声明:globalname

四、内置函数

内置函数是python里随机软件的一些函数,有很多,例如:

五、递归算法

递归函数那就是反比例函数自己调用自己。

见意少用递归,因为递归算法效率不高,但是不超过递归过程999次。由下面的函数也能很很直观的看出二分查找次数上限。

六、函数的返回值

前面巳经简单点推荐过return,return有两个作用:(1)内部函数完函数后,将结果返回;(2)函数里面遇见return就立玄结束后。

有的函数不只能一个返回值,函数要是前往多个值的话,会把这几个值放到一个元组里。同时,也可以不用多个值来收不到。

例:

七、匿名函数

匿名留言函数的功能很简单的,只用两次。下面就定义,定义了一个匿名函数。

用lambda定义匿名函数,冒号前面是返回值,后面是函数体,也就是函数的处理逻辑。

即入参是x,然后执行x1,把x的值前往。

---------------河南新华

python哪些不需要缩进?

全局变量:指在函数之外定义的变量,好象也没拱进,在程序不能执行的全过程有效

局部变量:指在函数内部建议使用的变量,仅在函数内部比较有效,当函数解盟时变量将不存在地

例1:

n1#全局变量

deffunc(a,b):

ca*b#c是局部变量,a和b充当函数参数也局部变量

returnc

sfunc(#34knock~#34,2)

print(s)

print(c)

![]()

这个例子那说明,当函数执行完退出后,其内部变量将被释放出。

如果函数内部在用了全局变量呢?例如:

n1#n是全局变量

deffunc(a,b):

牛b#这个n是在函数内存中新生成气体的局部变量,并非全局变量

returna*b

sfunc(#34knock~#34,2)

print(s,n)#测量帮一下忙n值有无突然发生转变knock~knock~1

![]()

函数func()内部建议使用了变量n,另外将变量参数b定义变量给变量n,又为何n值还没有变动?

只不过函数func()有自己的内存空间,它将牛b语句明白为生成气体一个局部变量n,并将参数b定义变量给它,此时func()函数没有将n拿出来全局变量。所以才,函数逃离后,局部变量n被能量,全局变量n的值还没有决定。

如果没有如果能让func()函数将n当做全局变量,是需要在变量n使用前显式那就证明该变量未全局变量,修改后:

n1#n是全局变量

deffunc(a,b):

globaln

nb#这个n是在函数内存中新生成气体的局部变量,不是全局变量

returna*b

sfunc(#34knock~#34,2)

print(s,n)#测试3看看n值是否需要再一次发生改变knock~knock~1

![]()

原文标题:python需要声明变量么 python如何定义函数?,如若转载,请注明出处:https://www.lrccn.com/tag/14311.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「歌词网」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。