您的位置:首页 > 编程语言 > Python开发

Python 【函数】 学习笔记

2018-03-02 15:14 344 查看

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。----------------------------------------------------------------------------------------------------------------------------------------------------

定义一个函数

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

----------------------------------------------------------------------------------------------------------------------------------------------------

语法

                    def 函数名(参数):
                        函数体----------------------------------------------------------------------------------------------------------------------------------------------------

调用
                函数名(参数)    #也可通过另一个函数调用
----------------------------------------------------------------------------------------------------------------------------------------------------

形参(parameter)实参(argument)
            def x(a):    #创建函数时,a为形参,表示占据的位置

                x(b)    #调用函数时,b为实参,表示实际的对象
-------------------------------------------------------
4000
---------------------------------------------------------------------------------------------

默认参数,关键字参数
                def x(a=“Nike”, b=“Just do it!”):    #Nike,Just do it!为默认参数
                    print(a +“->”+ b)

                x(a="鸿星尔克",b="to be number one ! ")    #调用函数时,a=,b=为关键字参数
----------------------------------------------------------------------------------------------------------------------------------------------------

不定长参数(收集参数)def printinfo( arg1, *vartuple ):    #不确定vartuple有多少参数时可在前加*
"打印任何传入的参数"
print ("输出: ")
print (arg1)
for var in vartuple:
print (var)
return;

----------------------------------------------------------------------------------------------------------------------------------------------------

函数文档

                def x():

                "这里是函数说明位置"    

可通过x.__doc__查看x的文档
----------------------------------------------------------------------------------------------------------------------------------------------------

全局变量(local variable)和局部变量(global variable)

global 和 nonlocal关键字

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

                def x(a,b):        #a,b为局部变量,只在x中可调用

                    y = a + b

                    global z        #将z转换为全局变量

                    z = 15        #如没有添加上方global转换时,z为x函数的局部变量,不影响x函数外z的值。

                    return
----------------------------------------------------------------------------------------------------------------------------------------------------

内嵌函数
                def fun1( ):

                    print("fun1 is running!")

                    def fun2( ):        #fun2建立于fun1之内,故只能在fun1中被调用,属于内嵌函数。

                        print("fun2 is running")

                fun2( )        #调用fun2需要在fun1内,注意缩进。
----------------------------------------------------------------------------------------------------------------------------------------------------

闭包

闭包就是内嵌函数的一种变形,闭包的书面定义是
闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)
,反正我是看不太懂,看一个例子就知道了。
def outer(x):
def inner(y):
print(x * y)
return inner        # 注意,inner没有加(),即不是: return inner()

print(outer(5))         # 我们可以看到outer(5)返回的是一个function类型
outer(5)(6)
输出结果:
<function outer.<locals>.inner at 0x000001CBBE3F5048>
30

----------------------------------------------------------------------------------------------------------------------------------------------------

nonlocal  非局部

                def fun1( ):                    x = 5                    defun2( ):                        nonlocal x    将x转为非局部变量
                        x += x        # 如不将x转为非局部变量,fun1内的x被屏蔽,fun2的x未被定义不能修改。                    return x                return fun2( )
----------------------------------------------------------------------------------------------------------------------------------------------------

lambda 匿名函数

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

                a = lambda x : x * 2 + 1    # :前是原函数的参数,:后面是原函数返回值
                a(5)        #调用后lambda会被内存清除
----------------------------------------------------------------------------------------------------------------------------------------------------

recursion 递归

            有返回值,且依靠返回自身的原理计算

              设置递归层数 import sys
                                 sys.setrecursionlimit(n)    #默认值100

斐波那契数列:
>>> def fn(n):
if n<=2:
return 1
else:
return fn(n-1)+fn(n-2)
----------------------------------------------------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: