博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 函数
阅读量:2240 次
发布时间:2019-05-09

本文共 2798 字,大约阅读时间需要 9 分钟。

函数

一、函数定义

二、函数编写说明文档

三、函数的返回值

四、函数参数

1、位置参数与关键字参数

2、默认参数

3、可变长参数

4、可变关键字参数

五、作用域

1、全局变量

2、局部变量

3、global关键字

4、内嵌函数与 nonlocal关键字

5、闭包

6、递归

7、lambda匿名函数

一、函数定义

In [17]:def info_1(a,b,c):    print(a)    print(b)    print(c)In [20]:info_1(1,2,3) # 赋值调用,这样就可以重复调用123

二、函数编写说明文档

def test(a,b):  # test的函数解释就是‘用来实现两个数的求和’    '''    用来实现两个数的求和    '''    print(a+b)

三、函数的返回值

def abs_1(x):          # return返回一个值,下面的程序就不会执行    if x >=0:        return(x)    else:        return(-x)In [32]:abs_1(-444)Out[32]:444

四、函数参数

1、位置参数与关键字参数

# 位置参数In [53]:def test(a,b,c):    print(a)    print(b)    print(c)In [54]:test(1,2,3)  # 1,2,3分别对应a,b,c123
# 关键字参数In [57]:test(a=2,b=1,c=3)213

关键字参数必须放在位置参数后⾯

使⽤名称指定的参数,有助于澄清各个参数的作⽤。这样,函数调⽤不再像下⾯这样怪异⽽神秘。

使⽤关键字参数使每个参数的作⽤清晰明了。另外,参数的顺序错了也没关系。
另外,关键字参数最⼤的优点还在于可以指定默认值。

2、默认参数

def test(a,b,c=1):    print(a)    print(b)    print(c)In [64]:test(b=1,a=2) # c=1是默认参数211

必选参数在前,默认参数在后,否则会报错。

默认参数降低了函数调⽤的难度,⽽⼀旦需要更复杂的调⽤时,⼜可以传递更多的参数来实现。⽆
论是简单调⽤还是复杂调⽤,函数只需要定义⼀个。

3、可变长参数

in[76]:def sum_2(*x_list):  # 在参数前面加个*    n=0    for i in x_list:        n+=i    return nIn [77]:sum_2(3,4,5,1,2,3,4,5,1,2,3)Out[77]:33

4、可变关键字参数

⼀个星号不会收集关键字参数,要收集关键字参数,可使⽤两个星号。

⼀个星号就是打包成元组传⼊进来,两个星号就是打包成字典传⼊进来。

In[79]:def test(**x): # 在参数前加两个*    return xIn [80]:test(a=1,b=2,c=3,d=4)   Out[80]:{'a': 1, 'b': 2, 'c': 3, 'd': 4}

五、作用域

1、全局变量和局部变量

# 全局作用域a=1# 局部作用域  n= 0即为局部变量def test_1(*args):    n=0    for i in args:        n+=i*i    return n

在函数外边定义的变量叫做全局变量

全局变量能够在所有的函数中进⾏访问
如果在函数中修改全局变量,那么就需要使⽤global进⾏声明,否则出错
如果全局变量的名字和局部变量的名字相同,那么使⽤的是局部变量的,⼩技巧:强⻰不压地头蛇

2、global关键字

# global关键字,全局变量不可变时使用a=100def test5():    global a  # 调用全局变量    a+=1    print(a)test5()

3、内嵌函数与 nonlocal关键字

def outer():     num = 10     def inner():         nonlocal num    # nonlocal关键字声明         num = 100         print(num)     inner()     print(num)outer()100100

4、闭包

In [111]:def funcX(x):     def funcY(y):         return x *y     return funcYIn [112]:funcX(1)(2)Out[112]:2

5、递归

在程序上,递归实质上是函数调⽤⾃身的⾏为。

# 递归def caljie(n):    if n>1:        result = n* caljie(n-1)    else:        result=1    return resultIn [131]:caljie(3)Out[131]:6

6、lambda匿名函数

①基本语法

⽤lambda关键词能创建⼩型匿名函数,这种函数得名于省略了⽤def声明函数的标准步骤。

lambda函数的语法只包含⼀个语句。

In [148]:f = lambda x:x*2 if x>5 else x/2    # else不能省略 可用else nonef(3)Out[148]:1.5

②使用场景

函数作为参数进⾏传递

Lambda函数能接收任何数量的参数,但只能返回⼀个表达式的值

匿名函数不能直接调⽤print,因为lambda需要⼀个表达式

把函数功能屏蔽

import timetime.sleep(10) # 让程序休眠10秒print('------zZZ-------')

③作为高级函数的参数

a、map

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]In [152]:list(map(lambda x:x*2+10, a))Out[152]:[12, 14, 16, 18, 20, 22, 24, 26, 28, 30]

b、filter

In[153]:def f(x):     if x % 2==0:  #  函数⽤于过滤序列         return x   list(filter(f,a))Out[153]:[2, 4, 6, 8, 10]

c、sorted

In[159]:sorted(a, key=lambda x: abs(5 - x))   #对所有可迭代的对象进⾏排序操作。Out[159]:[5, 6, 4, 4, 3, 3, 2, 8, 2, 1, 1, 10, 22, 55, 77]

转载地址:http://rtqbb.baihongyu.com/

你可能感兴趣的文章
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>