python学习【第四篇】python函数 (一)
2018-06-18 02:32:52来源:未知 阅读 ()
一、函数的介绍
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数
函数的好处:
- 代码重用
- 保持一致,易于维护
- 可扩展性
二、函数的定义
函数的定义规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
函数的语法:
def 函数名: 函数体
函数的示例:
def print_hello(): """ 打印hello :return: """ print("hello")
三、函数的返回值
根据示例来看下python的返回值:
def fun2(): msg = "hello world" return msg def fun3(): return 1, 2 ,3 aa = fun1() bb = fun2() cc = fun3() print(aa) print(bb) print(cc) # 输出结果: # None # hello world # (1, 2, 3)
总结:
1.函数中如果没有return语句返回,那么python函数会默认返回None
2.函数返回值数为0,函数默认返回None;函数返回值数为1是,则返回object;返回值数大于1时,则返回的是一个tuple;
四、函数的参数
函数参数的原则:
- 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
- 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
- 位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
- 默认参数
- 参数组
普通参数
def fun1(name): # name为形式参数 print(name) aa = "hello" fun1(aa) # aa为实参
默认参数
def func(name, age=18): print("%s:%s" % (name, age)) # 指定参数 func('wupeiqi', 19) # 使用默认参数 func('alex') # 注:默认参数需要放在参数列表最后
动态参数
def func1(*args): print(args) # 执行方式一 func1(11, 33, 4, 4454, 5) # 执行方式二 li = [11, 2, 2, 3, 3, 4, 54] func1(*li) def func2(**kwargs): print(kwargs) # 执行方式一 func2(name='wupeiqi', age=18) # 执行方式二 dict1 = {'name': 'fyh', "age": 18, 'gender': 'male'} func2(**dict1)
万能参数
# 万能参数 def func(*args, **kwargs): pass
五、全局变量与局部变量
全局变量与局部变量的本质在于作用域的不同
全局变量说白了就是在整个py文件中声明,全局范围内都可以使用
局部变量是在某个函数内声明的,只能在函数内部使用
举例:
def fun1(): name = "aa" print(name)
执行结果:
报错的原因:试图访问局部变量而报的错
局部变量与全局变量变量名一样
- 全局变量与局部变量名一致,函数内部会优先使用局部变量
- 修改局部变量不会影响到全局变量
name = "bb"
def print_name(): name = "aa" print(name) print_name()
print(name) # 打印的结果为
# aa
# bb
global关键字
使用global关键字:则会告诉python编译器,这个变量是全局变量而不是全局变量,这样在函数体内修改变量会影响全局了
name = "bb" def print_name(): global name name = "aa" print(name) print_name() print(name) # 打印的结果: # aa # aa
nonlocal关键字
nonlocal关键字在python3中新出现的关键字,作用:用来在函数或其他作用域中使用外层(非全局)变量
nonlocal 适用于在局部函数 中 的局部函数, 把最内层的局部 变量设置成外层局部可用,但是还不是全局的。
注:nonlocal必须要绑定局部变量
def fun1(): num = 1 def fun2(): nonlocal num # 此处不能使用global,只能使用nonlocal num += 1 return num return fun2 aa = fun1() print(aa())
六、匿名函数
lamba函数也叫匿名函数,即函数没有具体的名称
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值
def calc(x): return x + 1 # 用lambda进行改写如下: calc2 = lambda x: x + 1 # 进行调用 print(calc2(10))
七、初识高阶函数
map函数
map处理序列中的每个元素,得到一个结果(迭代器),该迭代器元素个数与位置不变
list1 = [1, 2, 3, 4, 5] list2 = map(lambda x: x+1, list1) # map的第一个参数为函数,后面的参数为可迭代对象 print(list(list2)) # 结果:[2, 3, 4, 5, 6]
filter函数
filter(过滤):遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来,组成新的迭代器
list1 = ["1111aaa", "2222aaa", "3333aaa", "4444", "5555", "6666"] list2 = filter(lambda x: x.endswith("aaa"), list1) # 有过滤的作用 print(list(list2)) # 运行结果:['1111aaa', '2222aaa', '3333aaa']
reduce函数
reduce 处理一个序列,把序列进行合并操作
from functools import reduce list1 = [1, 2, 3, 4, 5] aa = reduce(lambda x, y: x+y, list1) # 前一个参数的函数必须是两个参数 print(aa) # 运行结果:15
八、内置函数
学习资料参考:https://docs.python.org/3/library/functions.html?highlight=built#ascii
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash