Python(四)-函数总结

版权声明:


本文作者为—陈鑫

本文的所有内容均来陈鑫总结,未经本人许可,禁止私自转发及使用。

QQ: 499741233

E-mail: 499741233@qq.com


第1章 Python函数

    面向对象
    面向过程
       1.可读性差
       2.重用性差
    函数式编程

第2章 自定义函数

看一个函数的例子:db文件内容为chenxin|123

def login(username,password):

    '''

    用于用户登陆

    :param username: 用户输入用户名

    :param password: 用户输入密码

    :return: true,登陆成功 false,登陆失败

    '''

    file_name = open("db",'r')

    for line in file_name:

        line_list = line.split("|")

        if line_list[0] == username and line_list[1] == password:

            return True

    return False

解释:

1.def:表示函数的关键字

2.函数名:函数的名称,日后根据函数名调用函数

3.函数体:函数中进行一系列的逻辑计算,如:发送邮件

4.返回值:当函数执行完毕后,可以给调用者返回数据。

5.参数:为函数体提供数据(Python函数传递参数是传递一个引用。而不是重新赋值.)

    1.普通参数(严格按照顺序,将实际参数赋值给形式参数)

    2.默认参数(必须放置在参数列表的最后)

    3.指定参数(将实际参数复制给指定的形式参数)

    4.动态参数:

    *args 默认将位置参数,全部放置在元组中

    **kwargs 默认将关键字参数(字典),全部放置在字典中

    5.万能参数

第3章 局部变量

1.在程序中定义的变量成为局部变量。 
2.局部变量作用域是定义该变量的子程序。 
3.当全局变量与局部变量冲突时,在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用

3.1 实  例:

#!/usr/bin/env python

name = "chenxin"

 

def change_name(name):

    print("before change:", name)

    name = "陈鑫"  #定义局部变量

    print("after chage:", name)

 

change_name(name)

 

print("在外面看name改了么?",name)

执行结果:

before change: chenxin

after chage: 陈鑫

在外面看name改了么? chenxin

第4章 全局变量

一、在程序一开始定义的变量称为全局变量。

    1.全局变量定义变量,必须都是大写(潜规则)。比如:NAME="chenxin"

    2.函数优先读当前环境变量,如果没有则会读全局变量,全局变量在所有的作用域都可读。

    3.修改全局变量需要先global name,表示name是全局变量(重新赋值)。

    4.特殊:列表,字典,元组嵌套列表,可修改,不可重新赋值。

第5章 内置函数

# all           #非0即真

# any           #

# bool          #0和,空字典空列表都是假

# callable      #表示是否可执行,或是否可调用

# dir           #快速查看对象提供了哪些功能

# divmod        #文章分页使用

# isinstance    #用于判断,对象是否是某个类的实例

# globals       #列出全局变量

# locals        #列出所有局部变量

# hash          #

 

#enumerate

#float

#format

#frozenset

 

# max           #最大

# min           #最小

# sum           #求和

# int           #整数

# hex           #十进制转换十六进制

# bin           #十进制转二进制

# oct           #十进制转十进制

# filter        #内部循环,参数比较

# map           #将函数返回值添加到结果中

# compile       #将字符串,编译成Python代码

# eval          #执行表达式,并且获取结果

# exec          #执行Python代码,接收:代码或者字符串

#id             #查看内存地址

#input          #等待用户输入

# isinstance    #查看某个对象是不是某个类的实例

# issubclass    #

# len           #查看长度

# list          #

# memoryview    #查看内存地址相关类

# next          #

# iter          #创建迭代器

# object        #所有类的复类

# open          #

# ord           #

# pow           #

# print         #

# property      #

# range         #

# repr          #

# reversed      #反转

# round         #

# set           #集合

# slice         #

# sorted        #

# staticmethod  #

# str           #字符串

# super         #面向对象

# tuple         #元祖

# type          #类型

# vars          #当前模块有哪些变量

# zip           #压缩

# __import__    #导入模块

 

 

# delattr()    

# getattr()    

# setattr()

第6章 函数返回值

想要获取函数的执行结果,就可以用return语句把结果返回。

1.函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为return语句代表着函数的结果。

2.如果未在函数中指定return,那这个函数的返回值为None。

第7章 递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身,这个函数就是递归函数。

#!/usr/bin/env python

def calc(n):

    print(n)

    if int(n/2) ==0:

        return n

    return calc (int(n/2))

 

calc(10)

7.1 递归特征: 

1、必须有一个明确的结束条件。 

2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少。

3、递归效率不高,递归层次过多会导致栈益处(在计算机中,函数调用是通过栈(stack)这种数据结果实现的,每当进入一个函数调用,栈就会加一层栈帧,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈益处。

第8章 匿名函数

匿名函数就是不需要显示的指定函数

#!/usr/bin/env python

def calc(n):

    return n**n

print(calc(10))

 

#换成匿名函数

calc = lambda n:n**n

print(calc(10))

#从上看来好像并无卵用,如果是这么用确实没毛改进,不过匿名函数主要是和其他函数搭配使用,如下:

res = map(lambda x:x**2,[1,5,7])

for i in res:

    print(i)

#结果:

1

25

49

第9章 高阶函数

     变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

#!/usr/bin/env python

def add (x,y,f):

    return f(x) + f(y)

 

res = add(3,-6,abs)

print(res)

第10章 函数式编程

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

而函数式编程,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。 
我们首先要搞明白计算机(Computer)和计算(Compute)的概念。 
在计算机的层次上,CPU执行的是加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是最贴近计算机的语言。 
而计算则指数学意义上的计算,越是抽象的计算,离计算机硬件越远。

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。 
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

(1 + 2) * 3 - 4

#传统的过程式编程,可能这样写:

    var a = 1 + 2;

    var b = a * 3;

    var c = b - 4;

#函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,如下:

    var result = subtract(multiply(add(1,2), 3), 4);

#这就是函数式编程(就会这么多)

原文地址:https://www.cnblogs.com/cxcx/p/6047863.html