目录

  • 控制流
    • (一)控制流程
    • (二)三种结构
      • 条件分支语句(if)
      • 条件循环结构(while)
      • 迭代循环(for)
    • (三)计算的“容器”:一个类比
  • 代码组织:函数
    • 一、代码组织:函数(def)
      • (一)封装一个功能
      • (二)定义与调用函数
      • (三)变量的作用域
      • (四)函数小技巧
        • map() 函数
        • 匿名函数lambda
    • 二、代码组织:函数的参数
      • (一)形式参数与实际参数
      • (二)定义函数的参数
      • (三)固定参数与可变参数
      • (四)调用函数的参数
  • 引用拓展模块
    • (一)调用模块化的工具
    • (二)Python语言标准库
        • 2. 数字和数学模块
        • 3. 数据类型
        • 4.功能编程模块
        • 5.数据持久化
        • 6.数据压缩和存档
        • 7.文件格式
        • 8.文件和目录访问
        • 9.通用操作系统服务
        • 10.并发执行
        • 11.加密服务
        • 12.网络和进程间通信
        • 13.互联网数据处理
        • 14.互联网协议和支持
        • 15.多媒体服务
        • 16.结构化标记处理工具
        • 17.程序框架
        • 18.图形用户界面
      • (三)拓展命名空间

控制流

(一)控制流程

  1. 在计算机运行过程中,”下一条语句“决定了计算机是能够自动调整、自动反复操作,还是只能像计算器那样一步接着一步计算。
  2. 这种决定”下一条语句“的机制,在程序设计语言中称作——控制流程

(二)三种结构

Python语言中的控制流程

  1. 顺序结构:按照语句队列前后顺序来确定下一条将要执行的语句
  2. 条件分支结构:根据当前情况来选择下一条语句的位置
  3. 循环结构:周而复始地执行一系列语句
    注意:几乎所有的程序设计语言都提供了三种控制流程

条件分支语句(if)

基本要素

  1. 预设的判断条件
  2. 达成条件后执行的语句

扩展要素

  1. 当条件不满足时执行的语句
  2. 多条件时哪个满足执行哪个的条件
if <逻辑表达式>:<语句块1>……
else:<语句块2>
  1. if和else都是“保留字” (即不能当作变量和函数名)
  2. “逻辑表达式”是指所有运算的结果为逻辑类型(True或False)的表达式
  3. “语句块”就是条件满足后执行的一组语句
  4. 冒号表示语句层次(即下一行要缩进)
  5. 语句块缩进

注意:各种类型中某些值会自动被转换为False,其它值则是True:None, 0, 0.0, ‘’, [], (), {}, set(),即空字符、空列表、空元组、空字典、空集合均为False。

if <逻辑表达式1>:<语句块1>
elif <逻辑表达式2>:<语句块2>
elif <逻辑表达式3>:<语句块3>
… …
else:<语句块n>

多种情况的条件语句,用if—elif结构,会更加简洁,层次更加清楚
注意:elif后面没有冒号

条件循环结构(while)

根据需要对一系列操作进行设定次数或者设定条件的重复,这样的控制流程,就称作循环结构

  1. 能持续对大量数据进行处理
  2. 在长时间里对一些未知状况进行连续监测循环结构

基本要素:
循环前提和执行语句

  1. 在执行这组语句之前,计算机会检查循环前提是否存在,只要存在,就会反复执行这组语句,直到循环前提消失

循环前提的类型:

  1. 从某个容器或者潜在的数据集中,逐一获取数据项,什么时候取不到数据项了,循环前提就失效—— for <数据项> in <数据集>
  2. 只要逻辑表达式计算结构为真(True),循环的前提就存在,什么时候逻辑表达式计算结果为假(False),循环的前提就失效—— while 循环结构

注意:与条件分支结构的区别
循环结构会多次检查循环前提

扩展要素:

  1. 当循环前提消失,停止执行这组语句的时候,执行一次另一组语句
# 条件循环表达式
while <逻辑表达式>:<语句块>break #跳出循环 用break不会执行else后面的语句块 直接跳到while后面的语句块continue #略过余下循环语句 继续上面while的循环<语句块>
else: #条件不满足退出循环,则执行<语句块>
  1. while、else:保留字
  2. 逻辑表达式:指所有运算的结果为逻辑类型(True或False)的表达式
  3. 语句块:一组语句

嵌套循环:
双重甚至多重循环

for i in range(1,10000):n = istep = 0while n != 1:if n % 2 == 0:n = n // 2else:n = n * 3 + 1step += 1else:print(i,"traped!", step, "steps")
  1. 中断程序运行:CTRL+C
  2. 通过修改程序中range函数的参数,还可以验证其它范围的连续整数

迭代循环(for)

Python语言中的 for 语句实现了循环结构的第一种循环前提
从某个容器或者潜在的数据集中,逐一获取数据项,什么时候取不到数据项了,循环前提就失效—— for <数据项> in <数据集>

for <循环变量> in <可迭代对象>:<语句块1>break #跳出循环continue #略过余下循环语句
else: #迭代完毕,则执行<语句块2>

for循环语法:

  1. for、in和else都是“保留字”
  2. 可迭代对象表示从这个数据对象中可以逐个取出数据项赋值给“循环变量”
  3. 可迭代对象有很多类型,如字符串、列表、元组、字典、集合等,也可以有后面提到的生成器、迭代器等

range函数:
range(<终点>)

  1. 返回一个从0开始到终点的数列
    range(<起点>,<终点>)(左开右闭)(起点,终点-1)
  2. 从0以外的任何整数开始构建数列
    range(<起点>,<终点>,<步长>)
  3. 修改数列的步长,通过将步长设置为负数能够实现反向数列
    range构建的数列,包含起点整数,而不包含终点整数

range类型的对象:

  1. 直接当做序列
  2. 转换为list或者tuple等容器类型
list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(5,10))
[5, 6, 7, 8, 9]
list(range(5,10,2))
[5, 7, 9]
list(range(10,1,-2))
[10, 8, 6, 4, 2]
range(10)
range(0, 10)
tuple(range(10))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

continue语句和break语句:

  1. 都只能在循环内部使用
  2. 均作用于离它们最近的一层循环
  3. break是跳出当前循环并结束本层循环
  4. continue是略过余下循环语句并接着下一次循环

(三)计算的“容器”:一个类比

简单类型与容器类型

  1. 简单类型——是实体对象
  2. 容器类型——是结构将实体对象进行各种组织和编排

    计算语句和结构语句
  3. 就像简单类型和容器类型之间的关系
  4. 用顺序、条件分支和循环结构,来对各个赋值语句进行编排,最终成为解决问题的程序

代码组织:函数

一、代码组织:函数(def)

(一)封装一个功能

  1. 封装
    容器是对数据的封装
    函数是对语句的封装
    类是对方法和属性的封装
  2. 函数(function)
    程序中实现明确功能的代码段可以封装成一个函数,以便复用(reuse)

(二)定义与调用函数

  1. 定义函数
    ① 用def语句创建一个函数
    ② 用return关键字指定函数返回的值
def <函数名> (<参数表>):<缩进的代码段>return <函数返回值>
  1. 调用函数
<函数名>(<参数>)

注意括号!
无返回值:<函数名>(<参数表>)
返回值赋值:v = <函数名>(<参数表>)

(三)变量的作用域

  1. 局部变量(Local Variable)
    在函数内部定义的参数以及变量只在该函数定义范围内有效,函数外边无法访问到
  2. 全局变量(Global Variable)
    在函数外部定义的,作用域是整个代码段
  3. global关键字
    ① 可以在一个函数内部得到某个全局变量的值,但是无法进行修改,Python会在函数内部创建一个同名的局部变量
    ② 使用global关键字可以在函数中改变全局变量的值
num1,num2 = 1,2
def addNum():num1,num2 = 2,3return(num1 + num2)
addNum()
5
num1,num2  # 调用的是函数外的值
(1, 2)
num1,num2 = 1,2
def addNum():global num1,num2num1,num2 = 2,3return(num1+num2)
addNum()
5
num1,num2  # global赋值调用的事函数内的值
(2, 3)

(四)函数小技巧

map() 函数

有时需要对列表中每个元素做一个相同的处理,得到新列表
例如:所有数据乘以3
所有字符串转换为整数
两个列表对应值相加
2. map(func, list1, list2….)
函数func有几个参数,后面跟几个列表

num = [10,20,40,80,160]
lst = [2,4,6,8,10]
def mul3(a):return a * 3print (list(map(mul3,num)))def atob(a,b):return a + 1.0/bprint(list(map(atob,num.lst)))[30,60,120,240,480]
[10.5,20.25,40.166666666666664,80.125,160.1]

匿名函数lambda

  1. 有时函数只用一次,其名称也就不重要,可以无需费神去def一个
  2. lambda表达式
    返回一个匿名函数
    lambda <参数表>:<表达式>
num = [10,20,40,80,160]
lst = [2,4,6,8,10]
def mul3(a):return a * 3print (list(map(mul3,num)))def atob(a,b):return a + 1.0/bprint(list(map(atob,num.lst)))print(list(map(lambda a:a * 3,num)))
print(list(map(lambda a,b:a+1.0/b,num,lst)))

二、代码组织:函数的参数

(一)形式参数与实际参数

  1. 参数:传入到函数的值
    当调用含参数的函数时,这些参数的值会被复制给函数中的对应参数
  2. 形式参数(parameter)
    函数创建和定义过程中,函数名后面括号里的参数
  3. 实际参数(argument)
    函数在调用过程中传入的参数
  4. 形式参数只是代表一个位置、一个变量名
  5. 实际参数是一个具体内容,赋值到变量的值
def add(a,b):return a + b   # 形式参数
add(1,2)   # 实际参数
3

(二)定义函数的参数

  1. 定义函数时,参数可以有两种
  2. 一种是在参数表中写明参数名key的参数,固定了顺序和数量的固定参数
    def func(key1, key2, key3…):
    def func(key1, key2=value2…):
  3. 一种是定义时还不知道会有多少参数传入的可变参数
    *def func(*args): #不带key的多个参数
    def func(*kwargs): #key=val形式的多个参数(注意星号)

(三)固定参数与可变参数

注意:% 是格式化字符串,表示 将% 后面括号里的参数按格式放入到前面的字符串中

固定参数:

可变参数:

(四)调用函数的参数

  1. 调用函数的时候,可以传进两种参数
  2. 一种是没有名字的位置参数
    func(arg1, arg2, arg3…)
    会按照前后顺序对应到函数参数传入
  3. 一种是带key的关键字参数
    func(key1=arg1, key2=arg2…)
    由于指定了key,可以不按照顺序对应
  4. 如果混用,所有位置参数必须在前,关键字参数必须在后

引用拓展模块

(一)调用模块化的工具

  1. 模块就是程序
    ① 每个扩展名为.py的Python程序都是一个独立的模块(Module)
    ② 模块能定义函数、类和变量,让你能够有逻辑地组织你的Python代码段
  2. 组织模块
    包(package)是放在一个文件夹里的模块集合
  3. 模块引用方式
 import <模块> [as <别名>]

将模块中的函数等名称导入当前程序,在调用模块中的函数的时候,需要加上模块的命名空间,可以给导入的命名空间替换一个新的名字
引用方法:<模块>.<名称>

 from <模块> import <函数>

引入模块中的某个函数,调用时不需要再加上命名空间

(二)Python语言标准库

  1. 标准库
    在安装Python时就默认已经安装好的模块,Python具有功能强大的标准库

2. 数字和数学模块

numbers:数字抽象基类
math:数学函数
cmath:复数的数学函数
decimal:十进制定点和浮点算术
fractions:有理数
random:生成伪随机数
statistics:数学统计功能

3. 数据类型

datetime:基本日期和时间类型
calendar:与日历相关的一般功能
collections:容器数据类型
heapq:堆队列算法
bisect:数组二分算法
array:高效的数值数组
weakref:弱引用
types:动态类型创建和内置类型的名称
copy:浅层和深层复制操作
pprint:格式化输出
reprlib:备用repr()实现
enum :支持枚举

4.功能编程模块

itertools:为高效循环创建迭代器的函数
functools:可调用对象的高阶函数和操作
operator:标准运算符作为函数

5.数据持久化

pickle:Python对象序列化
copyreg:注册pickle支持功能
shelve:Python对象持久化
marshal:内部Python对象序列化
dbm:与Unix“数据库”的接口
sqlite3:SQLite数据库的DB-API 2.0接口

6.数据压缩和存档

zlib:与gzip兼容的压缩
gzip/bz2:支持gzip/bzip2文件
lzma:使用LZMA算法进行压缩
zipfile:使用ZIP存档
tarfile:读取和写入tar归档文件

7.文件格式

csv:CSV文件读写
configparser:配置文件解析器
netrc:netrc文件处理
xdrlib:对XDR数据进行编码和解码
plistlib:生成并解析Mac OS X.plist文件

8.文件和目录访问

pathlib:面向对象的文件系统路径
os.path:常见的路径名操作
fileinput:迭代多个输入流中的行
stat:解释stat()结果
filecmp:文件和目录比较
tempfile:生成临时文件和目录
glob:Unix样式路径名模式扩展
fnmatch:Unix文件名模式匹配
linecache:随机访问文本行
shutil:高级文件操作
macpath:Mac OS 9路径操作函数

9.通用操作系统服务

os:其他操作系统接口
io:用于处理流的核心工具
time:时间访问和转换
argparse:用于命令行选项,参数和子命令的解析器
getopt:用于命令行选项的C风格解析器
logging:Python的日志记录工具
getpass:便携式密码输入
curses:字符单元格显示的终端处理
platform:访问底层平台的标识数据
errno:标准errno系统符号
ctypes:Python的外部函数库

10.并发执行

threading:基于线程的并行性
multiprocessing:基于进程的并行性
concurrent.futures:启动并行任务
subprocess:子流程管理
sched:事件调度程序
queue:同步的队列类
_thread:低级线程API

11.加密服务

hashlib:安全哈希和消息摘要算法接口
hmac:用于消息身份验证的密钥哈希算法
secrets:生成用于管理机密的安全随机数

12.网络和进程间通信

asyncio:异步I/O
socket:低级网络接口
ssl:套接字对象的TLS/SSL包装器
select:等待I/O完成
selectors:高级I/O复用
asyncore:异步套接字处理程序
asynchat:异步套接字命令/响应处理程序
signal:设置异步事件的处理程序
mmap:内存映射文件支持

13.互联网数据处理

email:电子邮件和MIME处理包
json:JSON编码器和解码器
mailcap:Mailcap文件处理
mailbox:以各种格式处理邮箱
mimetypes:将文件名映射到MIME类型
base64:Base16/Base32/Base64/Base85数据编码
binhex:对binhex4文件进行编码和解码
binascii:在二进制和ASCII之间转换
quopri:对MIME引用的可打印数据进行编码和解码
uu:对uuencode文件进行编码和解码

14.互联网协议和支持

webbrowser:Web浏览器控制器
cgi:通用网关接口支持
cgitb:CGI脚本的回溯管理器
wsgiref:WSGI实用程序和参考实现
urllib:URL处理模块
http:HTTP模块
ftplib/poplib/imaplib/nntplib/smtplib:
FTP/POP3/IMAP4/NNTP/SMTP协议客户端
smtpd:SMTP服务器
telnetlib:Telnet客户端
socketserver:网络服务器的框架
xmlrpc:XMLRPC服务器和客户端模块
ipaddress:IPv4/IPv6操作库

15.多媒体服务

audioop:处理原始音频数据
aifc:读写AIFF和AIFC文件
sunau:读取和写入Sun AU文件
wave:读写WAV文件
chunk:读取IFF分块数据
colorsys:颜色系统之间的转换
imghdr:确定图像的类型
sndhdr:确定声音文件的类型
ossaudiodev:访问兼容OSS的音频设备

16.结构化标记处理工具

html:超文本标记语言支持
xml:XML处理模块

17.程序框架

turtle — 海龟作图库
cmd —支持面向行的命令解释器
shlex —简单的词法分析

18.图形用户界面

tkinter:Tcl/Tk的Python接口

(三)拓展命名空间

  1. 命名空间
    ① 表示标识符(identifier)的可见范围
    ② 一个标识符可以在多个命名空间中定义,在不同命名空间中的含义互不相干
dir(<名称>)函数:列出名称的属性
help(<名称>)函数:显示参考手册
import time
dir(time)
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', 'CLOCK_UPTIME_RAW', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']
time.tzname   # 返回了一个时区
('CST', 'CST')
help(time.time)
Help on built-in function time in module time:time(...)time() -> floating point numberReturn the current time in seconds since the Epoch.Fractions of a second may be present if the system clock provides them.print(time.time())
1658238077.049102

python基础学习之计算和控制流相关推荐

  1. python用户输入算式并计算_Python基础学习之计算和算式

    今天小编要跟大家分享的文章是关于Python基础学习之计算和算式.正在学习Python相关知识的小伙伴们来和小编一起看一看吧,希望能够对大家有所帮助! Python 具有执行计算的能力. 直接在 Py ...

  2. python心得体会-终于懂得python基础学习心得

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  3. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识

    1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...

  4. python | 基础学习(一)了解Bug、pycharm、变量、程序的三大流程(顺序、if、while)、运算符、快捷键

    文章目录 一.引言 1.python的起源 2.解释器 3.python的设计目标 4.python的特点 二.python 1.了解BUG 2.python的三种运行方式 ①解释器python/py ...

  5. Python基础学习之字典操作

    Python基础学习之字典操作 文章目录 Python基础学习之字典操作 1. 字典的创建 1.1 直接赋值法 1.2 关键字赋值法 1.3 列表转化法 1.4 元素增加法 1.5 元组转化法 1.6 ...

  6. 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程

    8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...

  7. python自学用什么书好-适合python基础学习的好书籍

    分享几本python基础学习的书籍给大家 <Python编程:从入门到实践> 内容简介:本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用P ...

  8. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  9. python基础学习_转行零基础该如何学习python?很庆幸,三年前的我选对了

    这似乎是一个如荼如火的行业,对于一直在思考着转行的我,提供了一个不错的方向. 这个行业当然就是python程序员,真正开始决定转行是在24岁的时候,到现在已经有三年多了,我从零开始,每天用业余两个小时 ...

最新文章

  1. LMDIF_函数源码
  2. 博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理
  3. 解决×××无法上网的心得
  4. windows经典地雷小游戏(C语言实现)
  5. viewpager 自定义翻页效果_轻松打造专业的录音棚效果,连网红用了都说好的唱吧声卡K10套装...
  6. [九省联考2018]IIIDX 贪心 线段树
  7. SQL:如何用一个sql统计出全校男生个数、女生个数以及总人数
  8. spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
  9. Node.js学习笔记8
  10. 【com编程】IE浏览器(右键扩展功能总结版)
  11. Adobe下周将推新补丁和新的更新模式
  12. Android路由器初始密码,了解路由器用户名和万能密码
  13. 有长度,有角度,有点积,有人性
  14. 同一个接口返回多种数据类型
  15. 8类网线利弊_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试
  16. 计算机电源再利用usb充电器,变废为宝,笔记本旧电源改造的8口USB充电器
  17. 关于计算机设计的英语作文,计算机专业设计英文参考文献 计算机专业设计专著类参考文献有哪些...
  18. 中国建设银行信息技术类校招笔试心得
  19. pillow之new和paste
  20. 日历节气显示不正常2015年1月6号是小寒,而现在是显示2015年1月5号是小寒

热门文章

  1. 教你用单片机表白2019(文末送代码)
  2. 第二届“中科实数杯”全国电子数据取证 wp
  3. 博贤科技管理系统漏洞0day
  4. pwm调速流程图小车_51单片机 小车 L298N pwm调速 串口控制 按键控制
  5. Regsvr32和Regasm注册DLL COM组件
  6. Archive of Our Own_开箱用out-of-box Redis序列号生成器 不再写任何代码 你值得拥有
  7. 计算机网络信号电平,电平信号什么意思_电平和电压的区别
  8. spark yarn模式提交任务不成功(application state: ACCEPTED)
  9. SpringMVC--记录学习历程
  10. 【CO003】操作系统笔记3 —— IPC 问题