Python3——函数与函数式编程

版权声明:本文为博主原创文章 && 转载请著名出处https://blog.csdn.net/cs_lwb https://blog.csdn.net/cs_lwb/article/details/82051397

Python3——函数与函数式编程

一、简介

二、python函数的定义方法

三、函数返回值

四、函数调用

五、参数

六、匿名函数

七、全局变量和局部变量

八、global 和 nonlocal关键字

九、内置函数

参考文献:


一、简介

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。

但你也可以自己创建函数,这被叫做用户自定义函数。
           编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法。
           函数式编程就是:定义一个数学函数,然后按照这个数学模型用编程语言去实现它。
           过程定义:过程就是简单特殊没有返回值的函数
           为何使用函数?——没有函数的编程只是在写逻辑(功能),如果脱离了函数,要写相同的逻辑(功能),唯一的方法就是拷贝
            使用函数优点:(1)代码重用(2)保持一致性(3)可扩展性

二、python函数的定义方法

    (1)函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
    (2)任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    (3)函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    (4)函数内容以冒号起始,并且缩进。 
    (5)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法:
        def 函数名(参数列表):
            函数体

>>> def test(x):
>>> 	"xxxxxx"
>>> 	x+=1
>>> 	retrun x
'''	
	def:定义函数的关键字
	test:函数名
	():内可定义形参
	"":文档描述
	x+=:代码块或程序处理逻辑
	return:定义返回值
'''

三、函数返回值

 注:当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None,所以在python中即便是过程也可以算做函数。

    返回值数=0:返回None
    返回值数=1:返回object
    返回值数>1:返回tuple

四、函数调用

定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
           这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
           语法:方法名+()即可如; test()

五、参数

           形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参
           实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式或函数
           区别:形参是虚拟的,不占用内存空间,形参变量只用在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据单向传送,实参传给形参。
           必需参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
           默认参数:调用函数的时候,默认参数非必须传递  用途:赋予默认值
           关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

>>> def test(x,y):
>>> 	print(x)
>>> 	print(y)
>>> test(y=2,x=1)#关键字调用
>>> text(1,2)#位置调用(需要一一对应)
>>> #test(x=1,2)#关键参数不能写在位置参数前面
	
>>> def test(x,y=2):# y=2代表默认参数  可传可不传
>>> 	print(x)
	
>>> def test(*args): # *代表可以接收N个参数
>>> 	print(args)
		
>>> def test(**kwargs):# **代表可以接收N个关键字参数,转换成字典的方式。
>>> 	print(kwargs)

六、匿名函数

    python 使用 lambda 来创建匿名函数。
    所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
    (1)lambda 只是一个表达式,函数体比 def 简单很多。
    (2)lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    (3)lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
    (4)虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法:
        lambda [arg1 [,arg2,.....argn]]:expression

>>> # 可写函数说明
>>> sum = lambda arg1, arg2: arg1 + arg2
	 
>>> # 调用sum函数
>>> print ("相加后的值为 : ", sum( 10, 20 ))
>>> print ("相加后的值为 : ", sum( 20, 20 ))
	
相加后的值为 :  30
相加后的值为 :  40

七、全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

           局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

>>> total = 0 # 这是一个全局变量
>>> # 可写函数说明
>>> def sum( arg1, arg2 ):
>>> 	#返回2个参数的和."
>>> 	total = arg1 + arg2 # total在这里是局部变量.
>>> 	print ("函数内是局部变量 : ", total)
>>> 	return total
	 
>>> #调用sum函数
>>> sum( 10, 20 )
>>> print ("函数外是全局变量 : ", total)
结果:
	函数内是局部变量 :  30
	函数外是全局变量 :  0

八、global 和 nonlocal关键字

           当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

>>> num = 1
>>> def fun1():
>>> 	global num  # 需要使用 global 关键字声明
>>> 	print(num) 
>>> 	num = 123
>>> 	print(num)
>>> fun1()
>>> print(num)
输出结果:
		1
		123
		123

          如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

>>> def outer():
>>> num = 10
>>> def inner():
>>>     nonlocal num   # nonlocal关键字声明
>>>     num = 100
>>>     print(num)
>>> inner()
>>> print(num)
>>> outer()
输出结果:
		100
		100

九、内置函数

http://www.runoob.com/python3/python3-built-in-functions.html

参考文献:

    函数:http://www.runoob.com/python3/python3-function.html
    内置函数:http://www.runoob.com/python3/python3-built-in-functions.html
    文档:https://wiki.python.org/moin/BeginnersGuide
    
    以上内容经供参考,详情请仔细阅读文档。哈哈

猜你喜欢

转载自blog.csdn.net/cs_lwb/article/details/82051397
今日推荐