Python中def及lambda的功能介绍
函数def及lambda的功能介绍
1. def函数的功能介绍
1. 函数的参数
无参数函数
格式:def func_name():
'''__doc__'''#函数的说明文档(内容)
expression
例如:def name_d():
'''This is a name list!'''
print(['zhang','wang','li'])
name_d()#调用函数
>>> ['zhang','wang','li']
print(name_d.__doc__)#打印函数的说明文档
>>> This is a name list!
#函数不调用是不会执行操作的,但是会检测语法是否正确。调用函数的方法就是函数名()。
注:强烈建议声明函数时书写函数的说明文档。
位置参数(形参)
格式:def func_name(arg1,arg2,...):
'''__doc__'''#函数的说明文档(内容)
expression
例如:def jiafa(a,b,c):
'''This is jiafa!'''
print(a+b+c)
jiafa(1,2,3)
>>> 6
#函数的位置可以有一个,也可以有多个。声明函数时设置位置的个数必须与调用时输入的实参的个数一样,而且顺序要一致。
关键字参数
格式:同上
例如:def jiafa(a,b,c):
'''This is jiafa!'''
print(a+b+c)
jiafa(a=2,1,3)
>>> 6
#关键字参数与上述的位置参数类似,只是关键字参数主要是在输入实参时,指定参数来赋值,可以改变函数参数的顺序。
注:关键字参数只能放在位置参数后面。
默认参数
格式:def func_name(arg1,arg2,...arg_n=value):
'''__doc__'''#函数的说明文档(内容)
expression
例如:def jiafa(a,b,c=3):
'''This is jiafa!'''
print(a+b+c)
jiafa(2,1)
>>> 6
#默认参数需要在声明函数时直接设定好值,但必须要放在其他形参的后面,调用函数时,默认参数可以再次赋值,也可以不指定。
注:默认参数一定要在位置参数后面。
可变参数(动态参数)
动态参数之元祖
格式:def func_name(*args):
'''__doc__'''#函数的说明文档(内容)
expression
例如:def jiafa(*args):
'''This is jiafa!'''
print(args)
jiafa(2,1,3)
>>> (2,1,3)
#一个*表示传入的参数是一个元祖,调用函数时,将传入的实参都作为元祖的元素传入。如果调用时未传入参数,则会传入一个空元祖。
动态参数之字典
格式:def func_name(**args):
'''__doc__'''#函数的说明文档(内容)
expression
例如:def jiafa(**args):
'''This is jiafa!'''
print(args)
jiafa(2='a',1='b',3='c')
>>> {1:'b',2:'a',3:'c'}
#两个**表示传入的参数是一个字典,调用函数时,需要使用关键字参数的形式。调用时未传入参数,则会传入一个空字典。
注:函数所有参数的传入顺序为:
1. 位置参数
2. 关键字参数
3. 默认参数
4. 动态参数(元祖)
5. 动态参数(字典)
2. 函数的返回值
返回值为None
格式:def func_name():
'''__doc__'''#函数的说明文档(内容)
expression
例如:def jiafa():
'''This is jiafa!'''
print('Hello')
result = jiafa()#声明函数的返回值
print(result)
>>> 'Hello'
>>> None
#函数中没有指定返回值,因此该函数的返回值为None
指定返回值
格式:def func_name():
'''__doc__'''#函数的说明文档(内容)
expression
return value#声明函数的返回值
例如:def jiafa():
'''This is jiafa!'''
print('Hello')
return 123
result = jiafa()
print(result)
>>> 'Hello'
>>> 123
#由于函数中使用return声明了函数的返回值,因此该函数的返回值不为空。
多个返回值
格式:同上
例如:def fan():
'''This is a twos'''
print('Hello')
return 123,'abc',[1,3,]
result = fan()
print(result)
>>> 'Hello'
>>> (123, 'abc', [1, 3])
#当函数返回值为多个对象时,将所有对象以元组的形式返回。
3. 函数的变量
全局变量global
全局变量是指在函数外面声明的变量,(在函数内部使用需要使用global才能调用全局变量)
格式:variable = value
def func_name():
'''__doc__'''
global variable
expression
#全局变量一般不提倡在函数内部进行调用,因为在函数内部调用,函数外面的值也跟随着变化了。
局部变量local
局部变量是在函数内部声明的变量
全局变量和局部变量的有效范围
1. 全局变量在函数外部可以正常使用
2. 全局变量在函数内部也可以使用(需要用global声明)
3. 局部变量在函数内部可以正常使用
4. 局部变量在函数外部不可以被访问
注:特殊情况:当全局变量并不是一个字符串时,在函数内部是可以对其进行修改的,例如:列表、字典、集合等。
3.域外变量nonlocal
把域外或者父级函数的变量传入到域内或者子级函数中进行使用。
格式:def func_name1():
variable = value
def func_name2():
nonlocal variable
expression
return func_name2()
#域外变量常用于闭包函数中,而且在子级函数中使用不影响父级函数中的使用。
2. 简单函数lambda的功能介绍
lambda表达式是简单函数def的优化,减少代码的行数。
格式:lambda args:expression
使用def
例如:def jia(n1):
'''函数的每个参数加10'''
n = n1+10
print(n1)
jia(3)
>>> 13
使用lambda
例如:n = lambda n1:n1+10
print(n(3))
>>> 13
注:lamdba是一个表达式而非语句,也不是代码块。lambda也支持默认参数、关键字参数、动态参数等。
Python中def及lambda的功能介绍的更多相关文章
- Python中模块之os的功能介绍
Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...
- Python中模块之sys的功能介绍
sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...
- Python中生成器和迭代器的功能介绍
生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...
- Python中模块之copy的功能介绍
模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...
- Python中模块之re的功能介绍
re模块的功能介绍 1. 方法 match 从开头开始查找 方法:re.match(pattern,string,flags=0) 返回值:<class '_sre.SRE_Match'> ...
- Python中模块之queue的功能介绍
模块之queue的功能介绍 队列的分类: 队列主要要分为两种 1.双向队列 2.单项队列 1. 单项队列 创建单项队列 格式:queue.Queue(obj) 例如:que = queue.Queue ...
- Python中模块之random的功能介绍
random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...
- Python中的yield生成器的简单介绍
Python yield 使用浅析(整理自:廖 雪峰, 软件工程师, HP 2012 年 11 月 22 日 ) 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关 ...
- Python中的装饰器的简单介绍02
这篇博文转载自伯乐在线的12步轻松搞定python装饰器,重构成python3. 1. 函数 在python中,函数通过def关键字.函数名和可选的参数列表定义.通过return关键字返回值.我们举例 ...
随机推荐
- KNN算法的代码实现
# -*- coding: utf-8 -*-"""Created on Wed Mar 7 09:17:17 2018 @author: admin"&quo ...
- Spring Boot整合Spring Security
Spring Boot对于该家族的框架支持良好,但是当中本人作为小白配置还是有一点点的小问题,这里分享一下.这个项目是使用之前发布的Spring Boot会员管理系统重新改装,将之前filter登录验 ...
- gradle入门(1-2)gradle的依赖管理
Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 一.添加仓库 1.添加Ivy仓库 1.1.通过URL地址添加一个Ivy仓库 我们可以将以下代码片段加入到b ...
- Python基础学习篇章四
一. Python数据类型之字典 1. 键的排序:for循环 由于字典不是序列,因此没有可靠的从左至右的顺序.这就导致当建立一个字典,将它打印出来,它的键也许会以与我们输入时的不同的顺序出现.有时候我 ...
- 您的 Java 代码安全吗 — 还是暴露在外? 【转】
在开发 Java Web 应用程序时,您需要确保应用程序拥有完善的安全性特征补充.这里在谈到 Java 安全性时,我们并不谈及 Java 语言提供的安全性 API,也不涉及使用 Java 代码来保护应 ...
- Apache命令
参考于:http://www.jinbuguo.com/apache/menu22/programs/apxs.html 安装httpd-devel才有apxs
- 愿奴胁下生双翼——— 详解cookie和session
cookie和session都是基于web服务器的,不同的是cookie存储在客户端而session存储在服务器. 当用户浏览网站时,web服务器会在浏览器上存储一些当前用户的相关信息,在本地Web客 ...
- 2018 php的flush和ob_flush不起作用 整理解决
2018 php的flush和ob_flush不起作用 整理解决成功解决. 要点 : 使用函数 str_repeat2处配置:检查php.ini.Nginx 中有下面两个设置使用方式:echo str ...
- JDK1.8源码(七)——java.util.HashMap 类
本篇博客我们来介绍在 JDK1.8 中 HashMap 的源码实现,这也是最常用的一个集合.但是在介绍 HashMap 之前,我们先介绍什么是 Hash表. 1.哈希表 Hash表也称为散列表,也有直 ...
- POJ-2263 Heavy Cargo---最短路变形&&最小边的最大值
题目链接: https://vjudge.net/problem/POJ-2263 题目大意: 有n个城市,m条连接两个城市的道路,每条道路有自己的最大复载量.现在问从城市a到城市b,车上的最大载重能 ...