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 第六章 函数相关推荐

  1. python第六章函数课后答案_浙大PTA-Python题库 函数题(6-1~6-6)题解

    其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/1070206 ...

  2. python 第六章 函数 pta(1)

    1.Multiple-Choice 1.print(type(lambda:3))的输出结果是____. A.<class 'function'> B.<class 'int'> ...

  3. Python 精要参考(第二版) 第六章 函数与函数编程

    1. 第六章 函数与函数编程 为便于代码维护,绝大多数子程序都被分解并重新组织为函数以使代码模块化. 在 Python中定义一个函数很简单,Python从其它函数编程语言中借鉴了很多有用的思路用来简化 ...

  4. python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性pr ...

  5. 【python第五章——函数】

    python第五章--函数 第五章--函数 5.1函数概述 5.2 函数进阶 下面部分之后再写 5.3函数习题(一些小例子) 第五章--函数 5.1函数概述 快速入门: #定义函数 def func( ...

  6. C++ Primer 第六章—— 函数 思维导图

    C++ Primer 第六章-- 函数 思维导图 前言:该博文的定位是,您已经对C语言的基础知识和C++ Primer该书或C++知识有了基本了解.而在阅读C++ Primer(第五版)之后,感觉知识 ...

  7. MICK-SQL基础教程(第二版) 第六章 函数、谓词、CASE表达式

    第六章 函数.谓词.CASE表达式 函数 函数大致可以分为以下几种: 算术函数(用来进行数值计算的函数) 字符串函数(用来进行字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换 ...

  8. 宇文成 Python 第六章 列表和元组

    Python 第六章 列表和元组 #!/usr/bin/python -- coding:utf-8 -- @Author : Yu Wencheng @Time : 2020/9/5 17:04 & ...

  9. python (六)函数

    一.函数的形成 需求1:来测试一下'hello word' 的长度 # 在没有函数的时候,我们可以用for循环实现 s1 = "hello world" length = 0 fo ...

最新文章

  1. Eclipes的使用小技巧
  2. python range函数与numpy arange函数,xrange与range的区别
  3. 什么是堆(Heap)
  4. java 对话框 显示图片_Java对话框上显示图片
  5. 【spider】selenium模拟点击斗鱼示例
  6. Opencv 图像入门一之基本操作
  7. java中的垃圾回收机
  8. window环境配置虚拟主机
  9. .net开源CMS系统使用教程之:如何用We7 CMS建设全新网站
  10. Python ---太空射击游戏
  11. EL表达式与JSTL标签库
  12. (转)用MongoDB 实现优酷API 缓存
  13. 我的理解之JAVA中的4种访问权限
  14. 【Hardware】【磁保持继电器基础知识】
  15. AE影视后期之跳跃音符制作
  16. RK3568-SPI
  17. 金蝶系统怎样查看服务器地址,怎样查看金蝶服务器地址
  18. 计算机学院请假管理系统,《计算机学院在校学生离校请销假管理暂行规定》
  19. En-Tan-Mo答社区用户问
  20. [译] Genymotion 现在提供了 Open GApps 安装程序

热门文章

  1. UI设计工作好找吗?有哪些面试技巧?
  2. Feign实现服务调用
  3. 所有类是object的子类,但是又可以继承一个其他类解析
  4. spring cloud快速搭建
  5. bootstrap解析-栅格系统
  6. Spring注解注入
  7. 使用Spring进行统一日志管理 + 统一异常管理
  8. Windows Azure Pack与SCVMM标签解析分享
  9. 在linux上MySQL的三种安装方式
  10. osi 模型 tcpip网络模型