wangwt123

Python函数式编程

一、函数的定义

定义:所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地⽅,便于以后可以⼀直的进⾏调⽤,这样就可以解决多次重复来编写。

函数使用的关键字是def

定义函数格式如下:

def 函数名():
 代码

二、函数的参数

1、形式参数:是指定当以函数的时候小括号里面的参数,用来接收参数用的。

1 def add(a,b):#这个add(a,b)函数中a和b就是形式参数。
2     print(a+b)
3 add(a=1,b=2)
4 add(1,2)

运行结果如下:

3
3

Process finished with exit code 0

2、函数的形式参数也可以是函数。很重要!!

铺垫:一切皆对象,案例演示如下:

1 def func():
2     print("Hello Python!")
3 obj=func
4 obj()

运行结果如下:

Hello Python!

Process finished with exit code 0

函数的形式参数也可以是函数。

第一种:

1 def func1():  #1
2     print("Hello Python!")  #5
3 def func2(f1):  #2 这里func2(f1)函数中f1是形式参数,且f1()也是函数。
4     return f1()  #4
5 func2(f1=func1)  #3

运行结果如下:

Hello 

Process finished with exit code 0

第二种:

1 def func1():  #1
2     print("Hello Python!")  #4
3 def func2(f1):  #2
4     return f1  #5
5 func2(f1=func1())  #3

运行结果如下:

Hello 

Process finished with exit code 0

3、实际参数:指的是“调用”函数的时候,给形式参数赋予的值。

1 def add(a,b=2):
2     print(a+b)
3 add(3)
4 add(2,6)#在调用add(2,6)函数的时候,我们重新给形式参数a赋值2,b赋值6。

运行结果如下:

5
8

Process finished with exit code 0

其中下面这种是错误的语法赋值。

1 def add(a=2,b):#不符合语法
2     print(a+b)
3 add(3)

运行结果如下:

    def add(a=2,b):#不符合语法
                 ^
SyntaxError: non-default argument follows default argument

Process finished with exit code 1

4、默认参数:指的是在“定义”函数的时候,可以给形式参数指定具体的值。

1 def login(username="lucy",passworld=12345):
#在定义函数中,我们给形式参数username和password,指定了具体的值Lucy和1234,这就叫默认参数。
2 if username=="lucy" and passworld==1234: 3 print("登陆成功!") 4 else: 5 print("登陆失败!") 6 login()

运行结果如下:

登陆失败!

Process finished with exit code 0

三、函数的返回值

所谓“函数的返回值”就是在程序中函数完成一件事情后,最后给调用者的结果。

A、使用的关键字是return。

B、在一个函数里,如果有return,那么函数的返回值就是return后面的内容。

C、如果一个函数没有return关键字,那么函数的返回值是None。

D、一个函数可以有多个返回值,但是只要有一个return语句被执行到,那么这个函数就会结束,因此后面的return就不再起作用。

返回值的作用:

1、在单个函数的角度而言,函数写不写return,其实都没有太大的价值。

2、通过返回值可以将函数与函数之间建立关联关系。

建立关系案例一:

 1 def login(username="lucy",passworld="admin"):
 2     if username=="lucy" and passworld=="admin":
 3         return True
 4     else:
 5         return False
 6 # 通过返回值可以把login()函数与profile()函数之间能够建立关联关系
 7 def profile():
 8     if login()==True:
 9     # if login() :          #与上面的等价
10         print("查看个人主页信息")
11     else:
12         print("请登录")
13 profile()

运行结果如下:

查看个人主页信息

Process finished with exit code 0

建立关系案例二:

 1 def getUserInfo():
 2     username=input("请输入您的帐户名:\n")
 3     passworld=input("请输入您的密码:\n")
 4     return username,passworld #一个函数返回多个数据的方式
 5 def loginNiBi():
 6     username,passworld=getUserInfo() #得到用户的账号和密码
 7     if username=="lucy" and passworld==1234:
 8         passworld("登陆成功!")
 9     else:
10         print("账户或者密码错误!")
11 loginNiBi()

运行结果如下:

请输入您的帐户名:
Rose
请输入您的密码:
1234
账户或者密码错误!

Process finished with exit code 0

四、函数的变量

1、全局变量:在一个Python文件中定义的变量叫全局变量。就是该变量既可以在一个函数中使用,也能在其他函数中使用。

a:全局变量能够在所有的函数中进行访问。

2、局部变量:在函数内部定义的变量叫局部变量。

a:其作用范围是在这个函数内部,即只能在这个函数中使用,在函数的外部时不能使用的。

b:它是为了临时保存数据需要在函数中定义变量来进行存储。

c:当函数调用时,局部变量被创建,当函数调用完成后,这个变量就不能够使用了。

优先级:

A:在Python文件中调用变量,全局变量的优先级是高于局部变量

B:在函数内部,局部变量的优先级是高于全局变量的

1 language="Python语言"  #全局变量
2 def func():
3     language="Java语言"  #局部变量
4     print(language)
5 func()
6 print(language)
当函数内出现局部变量和全局变量相同的名字,比如本例中变量名都是"language",那么函数内部的中的变量名=数据,此时理解为定义了一个局部变量,而不是修改全局变量。

运行结果如下:

Java语言
Python语言

Process finished with exit code 0

五、函数的调用

1、函数定义后,必须要进行调用,不调用函数不会被执行。

2、函数调用的方式:

A、直接调用函数

B、主函数中调用函数(主函数可以理解为程序执行的入口)在python中可以是在主函数中调用,也可以不,比较自由。

1 language="Python语言"  
2 def func():
3     language="Java语言"  
4     print(language)
5 func() #函数的调用
6 print(language)
7 func() #函数的调用

运行结果如下:

Java语言
Python语言
Java语言


Process finished with exit code 0

3、在函数内部如果想要调用全局的同时又想调用全局变量的值,那么使用关键字global。

1 language="Python语言"
2 def func():
3     global language #global引用全局变量,一般不会轻易修改这个变量的值
4     print(language)
5 func()

运行结果如下:

Python语言

Process finished with exit code 0

 

posted on 2022-06-16 22:56  DOUBLE快乐  阅读(221)  评论(0编辑  收藏  举报

导航