python3.5------day4--function

函数

函数的作用:

1、减少重复代码

2、扩展性强

3、使程序变的可维护

函数的定义:

def test():
    print("I‘m yao")
#def 是固定的,test为函数名一对小括号不可不少

函数的调用:

def test():
    print("I‘m yao")

test()  # 函数的调用
# 结果:
I‘m yao

形参:

def test(x, y):
    print("I‘m yao")
    print(x*y)

test(5,6)  # 函数的调用

实参:

关键字参数:

默认参数

参数组

函数的各种参数总结:

1、形参和实参是一 一对应的

2、关键字参数和形参的位置无关

3、关键字参数和实参同时出现,关键字参数永远放在实参的右边。

4、形参和默认参数同时出现,默认参数永远写在最右边

5、参数组永远放在最右边

嵌套式函数:

def test(x, y, z):
    print(x, y, z)
    def test1(a, b):
        print(a, b)
    test1(4, 5)  # 调用嵌套函数
test(1, 2, 3)    # 调用第一层函数

递归函数:

def fun(x):
    if x // 2 > 0:
        fun(x//2)
    print(x)  #  x是个列表,一次打印
fun(10)
# 结果:
1
2
5
10

递归函数的特性:

1、必须有一个明确的结束调教

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

3、递归效率不高,递归层次过多会导致栈溢出。

函数的返回值:

作用:

1、一旦你的函数开始调用并开始执行,那你函数的外部程序就没有办法再控制函数的执行过程,此时玩不程序只能等待函数的执行结果。为什要等待函数的结果,因为外部程序要根据函数的执行结果来判断下一步该怎么走,这个结果就是以return的形式返回给外部程序。

2、return代表着函数的结束

3、return可以返回任意数据类型

4、对于用户来讲,函数可以返回任意数量的值,但对于python本身来讲,函数只能返回一个值,如果return后有多个值,那么结果返回也是一个值,这个值是以元组的形式存在的。

高阶函数:

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

示例:

def add(x,y,z):
    return z(x) + z(y)
test = add(3, -6, abs)  # abs函数是绝对值
print(test)

内置函数:

局部变量和全局变量

局部变量:

在子程序中定义的变量是局部变量,在程序一开始定义的变量称为全局变量,全部变量的作用域是整个程序,局部变量的作用域是定义该变量的子程序,当全局变量与局部变量同名时,再多定义局部变量的子程序内,局部变量起作用,其他地方那个全局变量起作用。

全局变量:

在整个过程中都生效的变量叫做全局变量

示例:

x = ‘xiaofeng‘   # 全局变量
def case():
    print(x)
    y = ‘oldboy‘  # 局部变量,出了这个函数就不能调用了
    print(y)

case()
print(x)
print(y)
# 结果
"C:\Program Files\Python35\python.exe" D:/python_progream/python_s15/day4/function_1.py
Traceback (most recent call last):
  File "D:/python_progream/python_s15/day4/function_1.py", line 40, in <module>
    print(y)
NameError: name ‘y‘ is not defined  # 因为y不是全局变量
xiaofeng
xiaofeng

匿名函数:

test = lambda x, y:(x + y)  # lambda定义匿名函数
print(test(3, 5))
# 结果
8

二分查找

data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35]

def binary_search(dataset, find_num):
    print(dataset)

    if len(dataset) > 1:
        mid = int(len(dataset) / 2)
        if dataset[mid] == find_num:  # find it
            print("找到数字", dataset[mid])
        elif dataset[mid] > find_num:  # 找的数在mid左面
            print("\033[31;1m找的数在mid[%s]左面\033[0m" % dataset[mid])
            return binary_search(dataset[0:mid], find_num)
        else:  # 找的数在mid右面
            print("\033[32;1m找的数在mid[%s]右面\033[0m" % dataset[mid])
            return binary_search(dataset[mid + 1:], find_num)
    else:
        if dataset[0] == find_num:  # find it
            print("找到数字啦", dataset[0])
        else:
            print("没的分了,要找的数字[%s]不在列表里" % find_num)

binary_search(data, 66)

三元运算+map函数

da = map(lambda n: n*2 if n > 5 else n, range(10))
for i in da:
    print(i)
# 结果
0
1
2
3
4
5
12
14
16
18

三元运算示例

# 三元运算
a = 4
b = 5
d=a if a>10 else b
# 结果
5

函数式编程:

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

函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

一、定义

简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。

主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式:

(1 + 2) * 3 - 4

    结果:5

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

    var a = 1 + 2;

    var b = a * 3;

    var c = b - 4;

函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:

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

这段代码再演进以下,可以变成这样

add(1,2).multiply(3).subtract(4)

这基本就是自然语言的表达了。再看下面的代码,大家应该一眼就能明白它的意思吧:

merge([1,2],[3,4]).sort().search("2")

因此,函数式编程的代码更容易理解。

要想学好函数式编程,不要玩py,玩Erlang,Haskell, 好了,我只会这么多了。。。

内置参数:


参数名


含义


abs()


绝对值


all()


判断一个列表所有的值是否都为真


any()


如果列表中一个为真,就返回真,空列表也是假


ascii()


显示ascii码表中的地方


bin()


把一个数字转换为二进制


bool()


判断真或假


bytes()


不可变类型


bytearray()


callable()


判断一个对象是否可以调用


chr()


ascii码对应的字符


classmethod()


ord()


字符转acsii对应的数字


compile()


把文件里的字符串解析成python的语法


complex()


实数转复数


delattr()


dict()


生成字典


dir()


默认打印当前模块的所有属性,如果传一个对象参数则打印当前对象的属性


divmod()


取余数


enumerate()


exec()


eval()


filter()


过滤


float()


浮点数


format()


格式化输出


forzenset()


getattr()


locals()


hasattr()


hash()


help()


帮助


hex()


16


id()


查看内存中的位置


input()


用户输入,例子input("aaa:") 等待用户输入


int()


整数


isinstance()


issubclass()


iter()


len()


获取长度(元组,列表,字符串)


list()


列表


map()


max()


求最大数


memoryview()


min()


求最小数


next():


下一行


object()


oct():


open()


打开文件的方法


pow():


print():


打印


property()


range()


定义一个范围,例子range(1,10),或者range(1,10,2)


repr():


reversed():


round():


五舍六入,例子:riund(2.5) == 3


set()


集合


setattr()


slice()


sorted():


排序


staticmethod()


str()


字符串


sum()


求和


super()


tuple()


元组


type()


查看类型(str表示字符串类型,lsit表示列表类型....)


vars()

默认打印当前模块的所有属性,如果传一个对象参数则打印当前对象的属性

zip()

 

__import__()

 
时间: 2024-10-11 16:11:08

python3.5------day4--function的相关文章

python3 -&gt; 函数注释 Function Annotations

Python 3.X新增加了一个特性(Feature),叫作函数注释 Function Annotations 它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可做为函数额外的注释来用. Python中普通的函数定义如下: def func(a, b, c): return a + b + c >>> func(1, 2, 3) 6 添加了函数注释的函数会变成如下形式: def func(a: 'spam', b: (1, 10), c: float) -> int: retu

Python3学习DAY4

一些内置函数和常用的函数: 内置函数: abs(number):返回一个数的绝对值. chr(number):ASCII码转换为字符,相反的函数order divmod(num1, num2):求出商和余数,返回一个tuple. divmod(10,3)=(3,1) eval(source[, globals[, locals]]):求表达式的值 excefile(object[, globals[, locals]]):exec语句用来执行储存在字符串或文件中的Python语句. 例:exec

Python3.5 day4作业:对员工信息文件,实现增删改查操作。

需求: 1.可进行模糊查询,语法至少支持下面3种: 1.select name,age from staff_table where age > 22 2.select  * from staff_table where dept = IT 3.查到的信息,打印后,最后面还要显示查到的条数 2.可创建新员工纪录,以phone做唯一键,staff_id需自增 3.可删除指定员工信息纪录,输入员工id,即可删除 4.可修改员工信息,语法如下: 1.UPDATE staff_table SET dep

python之six用法

six.PY2 返回一个表示当前运行环境是否为python2的boolean值 six.PY3 返回一个表示当前运行环境是否为python3的boolean值 import six,sys print(six.PY2) #python2结果为True print(six.PY3) #python3结果为True sys.version_info[0] #PY2 = 2 sys.version_info[0] #PY3 = 3 sys.version_info[0:2] #PY34>= (3, 4

Python 技能树-Index

命令行工具 ipython 第 1 章 IPython:超越 Python pylint pylint在项目中的使用 pylint的配置和使用 为什么Pylint既有用又不能用,以及如何使用它 如何使用 Pylint 来规范 Python 代码风格 Python基础知识点 Python打包知识点 关于python中的setup.py-孔令贤 PEP PEP Index Python中10个必读的PEP提案 Python面向对象 一篇文章搞懂Python中的面向对象编程 module与packag

016.Python闭包函数以及locals和globals

一 闭包函数 内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,这个内函数叫做闭包函数 1.1 闭包函数语法 def outer(): a = 5 def inner(): print(a) return inner 对比正常的局部变量 局部变量的生命周期最短,在调用结束之后,立即释放. def func(): a = 5 print(a) func() print(a) 执行 1.2 闭包函数的定义 def bibao(): people = "孙仲谋" def

详解正则表达式(re) 一

详解正则表达式(re) 一 research 查找文本中的模式compile 编译findall 查询所有匹配重复与贪婪 re 正则表达式 可以用形式化的语法描述文本匹配模式,模式又被正则表达式引擎编译成指令:执行指令并提供一个字符串作为输入,就可以知道给定的输入有没有与模式相匹配. 文字比较空洞还是直接看例子吧. search 查找文本中的模式 查找一段文本中有没有出现 sql 这个字符串. In [1]: s ="I like sql" In [2]: 'sql' in s Out

通过百度echarts实现数据图表展示功能

现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解echarts是个怎样技术的开发者来说,可以到echarts官网进行学习了解,官网有详细的API文档和实例供大家参考学习. 2.以下是我在工作中实现整理出来的实例源码: 公用的支持js文件 echarts.js.echarts.min.js,还有其他的图表需要支持的js文件也可以到官网下载 echa

帮同学做的大一大作业:《我的家乡—郑州》

---恢复内容开始--- 最近在上海上学的一个高中同学让我帮忙,帮她做她们的计算机课程大作业. 由于关系不错我也不好意思拒绝就帮忙做了,因为这个学期刚刚开始接触HTML5和css,所以制作过程中有很多不懂的,而且由于HTML5是选修课,一星期只有一节,所以做这个花费了比较多的时间,这个网站是我制作的第一个网站,比较有纪念意义,所以发在博客上,作为纪念. 通过去做这个作业,我了解到很多课上学不到的东西.因为没有美工,从头到尾,都是我一个人在臆想,刚开始的时候,根本无从下手,我去参考别人做的家乡网站

python3新特性函数注释Function Annotations用法分析

本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Function Annotations 它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可做为函数额外的注释来用. Python中普通的函数定义如下: def func(a,b): return a+b print(func(1, 2)) #3 添加了函数注释的函数会变成如下形式 def func(a: