python 第六章 函数
1.函数的定义
def 名称(形参):
函数体
2.函数的调用
名称(实参)
单独文件:模块 调用方式——模块.名称
3.函数的参数类型
1.位置参数:
def add(a,b):add(2,3)
#顺序,个数,数据类型都要相同!!!
2.关键字参数
def add(a,b):print(a,b)add(b=1,a=3)
⋅\cdot\quad⋅可以和位置参数混合使用,但是位置参数必须在关键字参数前面,关键字参数后面不可以有非关键字参数!!!
⋅\cdot\quad⋅不可以对同一个形参赋值!!!
⋅\cdot\quad⋅关键字参数不可以放在中间!!!
3.带默认值参数
#带默认值参数
def timer(h,m,s=0):print(h,m,s)#python解释器只能执行第二个定义的timer!!!
def timer(h,m):print(h,m)timer(10,11)
timer(10,11,30)
4.可变数量参数
#可变数量参数
a,*b=1,4,5,6,8print(a,b)#可以接受任意数量的参数,返回一个元组
def test(*a):print(a)
#只能够接受一个参数
def test1(a):print(a)lst=[1,2,4]
test1(lst)
test(1,3,4)
test(1)def test(c,*a,b):print(c,a,b)test(1,3,4,3,3,2,b=1) #可变数量参数后需要加一个关键字参数!!!# **d(两个星号)把参数收集到字典中,调用时一定要用关键字参数
注意!!!:
⋅\cdot\quad⋅实参传递给形参(初始化):值传递。
⋅\cdot\quad⋅在c,c++,汇编语言中,有值传递和地址传递两种。
⋅\cdot\quad⋅在python中,可变数据类型,传递进去的是复制过的地址;不可变数据类型,传递进去的是复制过的值。
⋅\cdot\quad⋅在函数内改变形参,对实参有无影响?
\quad\quad——不可变数据类型,无影响;可变数据类型,可能会有影响。
⋅\cdot\quad⋅实参是变化的,形参是固定的。
实例:
⋅\cdot\quad⋅在函数内对可变类型进行修改:
def
4.函数的返回值
1.return语句
⋅\cdot\quad⋅return语句是可选的,不是必须的。
⋅\cdot\quad⋅无return时,默认返回None。
⋅\cdot\quad⋅一个return只能返回一个值。
a,b=[1,3]
print(a,b)
#拆包返回
>>>1 3def test():return 1,2,3x=test()
print(x,type(x))
#一个数据,返回'int';多个数据,返回'tuple'
实例:
#去除列表中的重复元素,保持原有顺序
#若不考虑保持原有顺序,则可以把列表转化为集合,再转化为列表
#法一,遍历数据集,依次判断(迭代)
lst=[1,4,2,1,5,8,2,9,0]L1=[]
for i lst:if i not in L1:L1.append(i)
print(L1)
#法二,列表推导式
lst=[1,4,2,1,5,8,2,9,0]L2=[i for i in lst if i not in L2]print(L2)
>>>返回错误,因为L2是通过列表推导式生成的lst=[1,4,2,1,5,8,2,9,0]
L2=[]
L2=[i for i in lst if i not in L2]print(L2)
>>>返回原列表,没有去重lst=[1,4,2,1,5,8,2,9,0]
L2=[]
L2=[i for i in lst if i not in L2 and L2.append(i)]print(L2)
>>>返回空列表lst=[1,4,2,1,5,8,2,9,0]
seen=set()
L2=[i for i in lst if i not in seen and seen.add(i)]
print(seen)
print(L2)
>>>返回空列表 #集合的add函数返回None,所以整个列表推导式的返回值是False!!!lst=[1,4,2,1,5,8,2,9,0]
seen=set()
L2=[i for i in lst if i not in seen and not seen.add(i)]
print(seen)
print(L2)
>>>返回去重列表
2.参数(可变类型:列表,字典,自定义类型)
3.全局变量
5.命名空间和作用域
1.作用域(可访问的范围:程序里的位置):数据,函数,类。
⋅\cdot\quad⋅内存:寄存器,动态内存。
⋅\cdot\quad⋅动态内存:公共区域,私有区域(函数,对象)。
⋅\cdot\quad⋅公共区域是全局的,私有区域是局部的。
⋅\cdot\quad⋅全局变量通过代码随时调用,局部变量通过形参、return语句、写到文件中、采取通信方式等访问,局部变量不能从外部直接访问!!!
⋅\cdot\quad⋅全局变量在整个程序运行期间都是有效的!!!
实例:
def test():a=1 #局部变量a=10 #全局变量
test()
print(a)>>>
10def test():a=1 #局部变量test()
print(a)>>>
返回错误def test():global a #声明全局变量a=1 #全局变量a=10 #全局变量
test()
print(a)>>>
1
6.递归
1.表达式可以简化:根据已有的值推导出后面的值。
2.存在一个出口:在一定条件下,结果有确定的值。
算法:
if 条件:return ?
else:return 自身调用
实例:
cnt=0
def test():global cntcnt+=1test()
try:test()
except:pass
print(cnt)>>>
1024
2.计算阶乘
def f(n):if n==1:return 1else:return n*f(n-1)
print(f(5))>>>
120
3.斐波那契数列
def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)
7.迭代
算法:
for :n
(把中间结果保存起来,查表法)
8.课后思考
10进制转化为2进制:
4 →\rightarrow→ 001,4→\rightarrow→ 100
python 第六章 函数相关推荐
- python第六章函数课后答案_浙大PTA-Python题库 函数题(6-1~6-6)题解
其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/1070206 ...
- python 第六章 函数 pta(1)
1.Multiple-Choice 1.print(type(lambda:3))的输出结果是____. A.<class 'function'> B.<class 'int'> ...
- Python 精要参考(第二版) 第六章 函数与函数编程
1. 第六章 函数与函数编程 为便于代码维护,绝大多数子程序都被分解并重新组织为函数以使代码模块化. 在 Python中定义一个函数很简单,Python从其它函数编程语言中借鉴了很多有用的思路用来简化 ...
- python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理
Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性pr ...
- 【python第五章——函数】
python第五章--函数 第五章--函数 5.1函数概述 5.2 函数进阶 下面部分之后再写 5.3函数习题(一些小例子) 第五章--函数 5.1函数概述 快速入门: #定义函数 def func( ...
- C++ Primer 第六章—— 函数 思维导图
C++ Primer 第六章-- 函数 思维导图 前言:该博文的定位是,您已经对C语言的基础知识和C++ Primer该书或C++知识有了基本了解.而在阅读C++ Primer(第五版)之后,感觉知识 ...
- MICK-SQL基础教程(第二版) 第六章 函数、谓词、CASE表达式
第六章 函数.谓词.CASE表达式 函数 函数大致可以分为以下几种: 算术函数(用来进行数值计算的函数) 字符串函数(用来进行字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换 ...
- 宇文成 Python 第六章 列表和元组
Python 第六章 列表和元组 #!/usr/bin/python -- coding:utf-8 -- @Author : Yu Wencheng @Time : 2020/9/5 17:04 & ...
- python (六)函数
一.函数的形成 需求1:来测试一下'hello word' 的长度 # 在没有函数的时候,我们可以用for循环实现 s1 = "hello world" length = 0 fo ...
最新文章
- Eclipes的使用小技巧
- python range函数与numpy arange函数,xrange与range的区别
- 什么是堆(Heap)
- java 对话框 显示图片_Java对话框上显示图片
- 【spider】selenium模拟点击斗鱼示例
- Opencv 图像入门一之基本操作
- java中的垃圾回收机
- window环境配置虚拟主机
- .net开源CMS系统使用教程之:如何用We7 CMS建设全新网站
- Python ---太空射击游戏
- EL表达式与JSTL标签库
- (转)用MongoDB 实现优酷API 缓存
- 我的理解之JAVA中的4种访问权限
- 【Hardware】【磁保持继电器基础知识】
- AE影视后期之跳跃音符制作
- RK3568-SPI
- 金蝶系统怎样查看服务器地址,怎样查看金蝶服务器地址
- 计算机学院请假管理系统,《计算机学院在校学生离校请销假管理暂行规定》
- En-Tan-Mo答社区用户问
- [译] Genymotion 现在提供了 Open GApps 安装程序