python函数学习(八)

 python语言,即可以进行函数式的编程的语言,又是可以进行面向对象编程的语言,所谓函数,简单的理解就是将一些语句集合到

一起,这样可以在程序中多次的调用,而不需要为了某个功能写重复性的代码,这就是函数的魅力所在。在python中,函数的定义是使

用关键字def,下面先来定义一个简单的函数,通过这个例子来认识函数,见代码:

def f():
print('Hello World')

在如上的代码中,可以看到自定义了函数f,函数中输出是 :Hello World,那么编写函数后,怎么来进行调用函数了,函数的调用也是很

简单的,像如上的函数调用为:f(),就会输出:Hello World

    作为函数来说,都是有参数的,如写一个函数为:二个数想加,返回它的结果值,那么该函数为:

 在如上的代码中,可以看到,定义了add的函数,参数分别是a,b,函数的返回值是a+b和的结果,在该函数中,a和b就是函数的形式参数,

那么什么是实际参数了,调用函数add(2,3),在这里,2和3就是函数的实际参数,另外特别的注意,在函数中,return后还可以执行其他

的语句,答复是不行的,切记,在函数中,一旦执行了return后,函数执行过程立即终止,不再执行,在函数中,return后是函数的返回值,

如果没有return,函数的默认返回值是None。

       在python语言中,函数可以有默认的参数,这是其他语言所不具备的,当然,也可以对默认的参数依据实际的需求进行修改,在具体的

项目中依据集体的案例来进行。就仍然以add函数为案例来说明,见函数的默认参数的代码:

调用函数的时候,如果不对函数的默认参数进行修改,该函数返回的结果是5,当然,也可以对其中一个函数二个参数都进行修改,再调用函数,

见修改第一个参数后,函数执行的结果:

也可以对二个参数都进行修改,见修改的代码以及执行的结果:

在如上的案例中,可以清晰的看到,函数的默认参数,可以修改,也可以不修改,具体的情况依据在项目中具体的情况来进行应用,但是特别得

注意,在一个函数中,如果有多个形式参数,那么默认参数只能是最后一个参数,不能把默认参数在前面,其他的形式参数在后面,这样代码会

提示错误的,见错误信息:

在如上中,可以看到,如果默认参数在前面,形式参数在后面,该函数代码提示错误。在python的数据结构中,分别是列表,元组,字典,以及

set集合,在实际的项目中,函数的参数也有可能是动态参数,那么有么有可能,让元组或者字典成为函数的参数了,当然是可以的,在python的

函数中,*代表元组,**代表字典,下面就分别就实际的案例来说明这个过程,定义一个函数,以元组作为参数,输出参数并查看参数的类型,见

代码以及输出:

在截图中,可以看到函数的参数是元组,在具体以实际的案例再说明这个过程的应用

再来当函数的参数为字典的时候,来演示这样的一个结果,见代码:

可以看到,调用函数的时候,需要说明key和value的值,来演示参数直接是字典,看调用的过程,见如下:

可以看到,代码不同,但是输出的实际结果是一致的。
     函数的参数很多时候是静态的,也就是说是普通参数或者是默认参数,以动态参数(*args,**kwargs)的形式,使用的比较少,下面就以函数

的动态参数,来实现format的输出,来演示这样的一个过程,大家都知道format是格式化字符串的输出,如:

如果使用*args或者**kwargs实现,实现的效果为:

     在函数中,必须要搞清楚,什么是全局变量,什么是局部变量,以及全局变量在函数中的使用,全局变量简单的理解就是在一个模块中的函数都是

可以引用的,局部变量仅仅限于在本函数内使用,见实例以及实例的输出:

从函数的执行结果可以看出,f1()输出的是局部变量,f2()函数输出的是全局变量,在函数中,可以修改全局变量吗?假设我想让f1()输出的是全局

变量,答案是可以的,使用关键字:global,使用方法为:global 全局变量名称,表示对全局变量重新赋值,对如上的实例修改后,见输出:

     函数可以实现模块化的一个过程,比如登录,注册,下面就以函数式的编程实现这个过程,见代码:

def login(username,password):
"""
用于用户登录
:param username:用户输入的用户名
:param password:用户输入的密码
:return:True,表示登录成功;False:表示登录失败
"""
f=open('db','r')
for line in f:
list=line.split('|')
if list[0]==username and list[1]==password:
#登录成功
return True
#用户名或者密码错误
return False
def info():
'''登录成功后,获取用户的信息'''
f=open('db','r')
for line in f:
list=line.split('|')
print('恭喜您登录成功,你的账号为:',list[0])


def register(username,password):
'''注册函数'''
f=open('db','a')
temp=username+'|'+password
f.write(temp)
f.close()

def exit():
'''退出函数'''
import sys
sys.exit(1)

def main():
while True:
t=int(input('1、登录 2、注册 3、退出\n'))
if t==1:
username=input('请输入用户名:\n')
password=input('请输入密码:\n')
r=login(username,password)
if r:
print('login success')
info()
else:
print('login fail')
elif t==2:
username=input('请输入注册的用户名:\n')
password=input('请输入注册的密码:\n')
register(username,password)
elif t==3:
exit()

if __name__ == '__main__':
main()

在python中,三目运算符是很有意思的,特别是在if和else中,可以少写代码,比如写一个判断,见代码:
a=1
if a==1:
name='python'
else:
name='java'
如果使用三目运算符,可以很简单的把代码缩小,见实现的效果:
name='python' if a=1 else 'java'

下面来看lambda表达式,lambda是匿名函数,它的实现效果是为:
函数名称=lambda 函数参数:表达式,见具体的代码:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值