python基础第三篇
来源:互联网 发布:百川环评工程师软件 编辑:程序博客网 时间:2024/06/10 12:15
python基础 (三)
真心觉得python这门语言是业界良心:
- 函数语法与特性
- 局部变量与参数
- 返回值
- 嵌套函数
- 递归
- 匿名函数
- 高阶函数
- 内置函数
一、函数语法与特性
函数:将一组语句的集合通过一个函数名封装起来,若想执行该函数,调用其函数名
一般语法:
def hello(*args,**kwargs): ... return ...
参数和返回值视情况而存在
特性:
- 减少重复代码
- 可扩展
- 易维护
二、 局部变量与参数
实参:在函数调用时,必须具有确定的值,以便传递给函数的形参,因此必须预先定义,可以是常量、变量、表达式、函数等
形参:只有在调用时才分配内存单元,结束后立即释放,因此只在函数内部有效
def test(x,y):#x,y是形参 return x+ya=test(w,z)#w,z是实参
下面介绍几种形参:
def actor_info(name,sex,magnum_opus,country="中国"):#country是默认参数 print(""" ----------{name} info----------- 姓名: {name} 性别: {sex} 代表作: {magnum_opus} 国籍: {country}""".format(name=name,sex=sex,magnum_opus=magnum_opus,country=country))actor_info("赵丽颖","女","花千骨")
1、位置参数
按顺序依依传入。
actor_info("赵丽颖","女","花千骨")
2、关键参数
当给函数传参数时不想按顺序来,那么可以用指定参数名的关键参数,关键参数一定要在位置参数的后面不然就乱了,代码中magnum_opus和sex就是关键参数,不用考虑自身位置。
actor_info("赵丽颖",magnum_opus="花千骨",sex="女")
3、默认参数
这里country就是默认参数,调用时不需指定,若指定了就是指定的值,默认参数可看作特殊情况的位置参数,必须放在最后不打扰其他参数。
actor_info("赵丽颖","女","花千骨")
4、非固定参数
如果函数定义时不明确要传入多少参数,那么使用非固定参数。
args:将多传入的位置参数构造成一个元组。
def actor_info(name,*args,country="中国"): print(""" ----------{name} info----------- 姓名: {name} 性别: {sex} 代表作: {magnum_opus} 国籍: {country}""".format(name=name,sex=args[0],magnum_opus=args[1],country=country))actor_info("赵丽颖","女","花千骨")
**kwargs:将多传入的关键参数构造成一个字典。
def actor_info(name,*args,**kwargs): print(name,args,kwargs)actor_info("赵丽颖","女",magnum_opus="花千骨",country="中国")#输出#赵丽颖 ('女',) {'country': '中国', 'magnum_opus': '花千骨'}
全局变量:在程序一开始就定义的变量称为全局变量,其作用域是整个程序
局部变量:在子程序中定义的变量称为局部变量,其作用域是定义该变量的子程序
局部变量:
age=48print("你几岁啊")def liar(age): age=18 print("I am %s years old"%age)liar(age)print("其实真实年龄是%s"%age)
输出:
你几岁啊I am 18 years old其实真实年龄是48
因此当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用,在其他地方都是全局变量起作用。
三、返回值
函数的执行结果可以用return语句返回。
pay attention please!
- 函数执行过程中遇到return语句立即停止并返回结果,表征函数的结束
- 若函数中未指定return,那么返回值为None
四 、嵌套函数
函数还能嵌套函数,嵌套的子函数不能被外部程序调用,它是局部变量
depth=3def yangcong(): depth=2 def yangcong2(): depth=1 print("你正在剥第%s层洋葱"%depth) yangcong2() print("你正在剥第%s层洋葱"%depth)yangcong()print("你正在剥第%s层洋葱"%depth)
输出:
你正在剥第1层洋葱你正在剥第2层洋葱你正在剥第3层洋葱
五 、递归
嵌套函数是在函数中调用其他局部函数,那么在函数中调用自身就是递归函数。
def cal(n): if n==1: return n return n*cal(n-1)cal(5)#输出#120
主要特性:
- 必须有一个明确的结束条件
- 每次进入更深一层递归,问题规模比前一次有所减少
- 函数调用是通过栈来实现的,每执行一个函数调用就会增加一层栈,函数返回结束时会减少一层栈,因此递归调用次数过多,会引起栈溢出
递归函数还可用于对有序列表二分查找:
num_list=[2,5,7,9,12,15,19,25,29,36,38,46,89]def binary_search(num_list,num): if len(num_list)>1: mid=int(len(num_list)/2) if num_list[mid] == num: print("find it!") elif num_list[mid]>num: return binary_search(num_list[:mid],num) else: return binary_search(num_list[mid+1:],num) else: if num_list[0] == num: print("find it!") else: print("真是找不到啊!")binary_search(num_list,9)#输出#find it!
六、匿名函数
匿名函数不要按照常规方式明确的取指定一个函数。
#常规定义def test(n): return n*n#匿名函数定义test=lambda n:n*n
匿名函数需要和其他函数搭配使用,比如map函数:
data=map(lambda n:n*n,[5,4,6,3])for i in data: print(i)#输出#25#16#36#9
七、高阶函数
函数定义的参数中包含一个指向函数的变量,那么这个函数称作高阶函数。
def square(n): return n**2def sub(a,b,func): return func(a)-func(b)sub(5,3,square)#输出#16
八、内置函数
python解释器内含许多函数和数据类型。
具体参考python官方网页:https://docs.python.org/3/library/functions.html?highlight=built#ascii
- python基础第三篇
- 第三章 Python基础
- 第三章: Python基础
- 第三章 Python基础
- 第三章 Python基础
- 第三章:Python基础
- Python新手引导 第三篇-Python基础和字符编码
- Python之路【第三篇】:Python基础(二)
- Python基础学习--第三篇(List和Tuple类型)
- 《Python核心编程》第三章:Python基础
- 《Python核心编程》第三章:Python基础
- 101:Python基础 第三章: 函数
- [第三弹]Python正则表达式基础
- php基础第三篇
- java基础第三篇
- python第三篇-变量
- Python 核心编程笔记 第三章 Python基础
- python学习笔记(第三章,python基础)
- Pull解析(xml解析)
- 每天一点积累(一)--hashmap底层实现原理
- FZU
- Refletion2017.8.10
- 最长递增子序列
- python基础第三篇
- 浅析TCP字节流与UDP数据报的区别
- 7. Reverse Integer (2)
- SSL2677 2017年8月10号提高组T2 飞行(spfa)
- 数据库基本概念整理及常用SQL语句
- iOS-BLE蓝牙开发持续更新
- Day12
- 方格取数(动态规划经典题)
- Win10+vs2012+cuda8.0的安装与配置