python学习——主要的代码结构,模块和包
文章目录
- 前言
- 一、python的代码结构
- 1.1注释#与反斜杠\链接
- 1.2if elif else
- 1.3while、for、continue、else
- 1.4zip()、range()
- 1.5列表、字典、集合、生成器推导式
- 1.6函数、生成器、装饰器
- 补充:字符串format格式化
- 1.7命名空间和作用域,try和expect处理错误
- 二、模块、包、程序
- 1.模块、import
- 2包
前言
今天来复习一下python的代码结构、python模块与包和程序
一、python的代码结构
在很多计算机编程语言中会用{}花括号来划分代码段,同时会使用缩进使得代码更加具有可读性
python的设计者在设计python的时候就直接使用缩进来进行代码分段(这点是需要注意的)
1.1注释#与反斜杠\链接
python中使用#进行单行注释,在一行中注释过长的时候就可以使用\来连接到下一行
‘’’ ‘’'三引号多行注释
1.2if elif else
if 1>2:print("yes!")
else:print("no!")#注意if 后直接跟表达式,而且有:号,下一行缩进表示分段
1.3while、for、continue、else
while:
cnt = 0
while cnt < 5 :print(cnt)cnt += 1
for:
for i in list1:print(i)for i in 'cat':print(i)
运行结果是1 2 3 c a t
列表、字符串、元组、字典、集合等都可以是迭代对象,在python中for迭代是非常常见的形式
#对字典的迭代,默认迭代键
dic1 = {'a':1,'b':2,'c':3}
for i in dic1:print(i)#可以使用dic1.values()函数来迭代字典中的值
for value in dic1.values():print(value)#可以使用items()函数以元组的形式返回键值对
for item in dic1.items():print(item)
退出循环break,跳过当前一轮循环continue
结合else:
cnt = 0
while cnt >= 5:cnt += 1print('yes')if cnt = 3:break
else:print("循环正常结束")
只有当循环完全进行到底之后才会执行和while(或for)相对应的else中的语句
1.4zip()、range()
zip()函数可以实现同时对多个序列进行迭代
list1 = [1,2,3,4,5]
list2 = ['一','二','三','四','五']
list3 = ['one','two','three','four']for number,ch,en in zip(list1,list2,list3):print(number,ch,en)
zip()函数在最短的序列“用完”时就会停止
range()函数返回在特定区间的自然数序列
range(start,end,step)左闭右开
for i in range(0,2):#注意py中是要有冒号的print(i)
start默认值为0,step默认值为1
zip(),range()这样的函数返回的是一个可迭代的对象
1.5列表、字典、集合、生成器推导式
1.列表推导式
#简单形式
[expression for item in iterable]
#加上条件的列表推导式
[expression for item in iterable if condition]
例:
number_list = [number for number in range(0,11)]
number_list2 = [number for number in range(1,12) if number % 2 == 0]
#对元组列表的迭代
rows = range(1,4)
cols = range(1,3)
cells = [(row,col)for row in rows for col in cols]
2.字典推导式
{key_expression : value_expression for expression in iterable}
{key_expression : value_expression for expression in iterable if condition}
#字典推导也有if条件判断和多个for循环迭代语句
3.集合推导式
4.生成器推导式
1.6函数、生成器、装饰器
1.函数
(1)函数的定义
def fun1():print("这是定义的一个函数")fun1()
(2)函数的参数
位置参数:按照位置对应传参
def fun1(a,b,c):print("这是定义的一个函数")print("参数{}".format(a))print("参数{}".format(b))print("参数{}".format(c))
fun1(1,2,3)
补充:字符串format格式化
print("{} {} {}".format(1,2,3))
print("{2} {1} {0}".format(1,2,3))
print("{a} {b} {c}".format(a = 3, c = 1 , b = 2))
a = 12
b = 12.121
print("{:.2f}".format(a))
print("{:d}".format(int(b)))
关键字参数:调用函数时,传参指定对应参数的名字
指定默认参数值
(3)匿名函数lambda函数
lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。
#举一个简单的例子
def fu3(words,func):for word in words:print(func(word))
stairs = ['thud','meow']
def enliven(word):return word.capitalize() + '!'
fu3(stairs,enliven)#如果使用lambda函数写
fu3(stairs,lambda word:word.capitalize() + '!')
2.生成器、装饰器
1.7命名空间和作用域,try和expect处理错误
1.命名空间和作用域
一个名称在不同的使用情况下可能指代不同的事物。
在py中有很多命名空间,指的是在某个或者某段程序内的一个名称是唯一的,和其他命名空间的同名的变量等是无关的,相互独立。
numbera = 1
def print_number():numbera = 2"实际上在这里改变的仅是此函数内部的命名空间的numbera"print('Hi ! The numbera in the function"function"is: {}'.format(numbera))print_number()
print("And the numbera in the main is:",numbera)def print_number2():global numbera"加一个关键字global声明"numbera = 2print('Hi ! After global The numbera in the function"function"is: {}'.format(numbera))
print_number2()
print("And the numbera in the main is:",numbera)
运行结果如下
2.使用try和expect处理错误
在python中使用异常,当错误发生时,执行某一段代码。
当执行出错的代码的时候,需要适当的异常处理程序用于阻止潜在的错误发生.
在异常可能发生的地方添加异常处理程序,明确错误,记录运行环境并且停止程序执行。
list1 = [0,1,2,3]
p = 4
try:list1[p]
except:print('need a p between 0 and',len(list1))
在try中的代码会执行,如果存在错误就抛出异常,然后执行expect中的代码,否则跳过expect代码。
上面的expect无参数适用于任何异常类型,但是这样的处理方式会比较泛化(类似于直接输出,“发生了一个错误”)
有的时候需要除了异常类型以外其他的异常细节,可以使用下面的格式获取整个异常对象:except exceptiontype as name
'''下面一个例子会先去寻找是否有indexerror,因为它是由索引一个序列
的非法位置抛出的异常类型,讲一个indexerror异常赋值给err,把其他的
赋值给other,事例中会输出说有存储在other中的该对象的异常'''
s_list = [1,2,3]
while True:value = input('position [q to quit] ? ')if value == 'q':breaktry :position = int(value)print(s_list[position])except IndexError as err:print('Bad index : ',position)except Exception as other:print('someting else broke',other)
3.编写自己的异常
前面所讲到的所有异常(例如IndexError)都是在Python领域或者它的标准库中提前定义好的。根据自己的目的可以使用任一的异常类型,同时自己定义异常类型,用来处理程序比重可能出现的特殊情况
二、模块、包、程序
1.模块、import
1.模块
一个模块是一个python文件
引用其他模块的代码使用import语句,被引用的模块中的代码就相当于插入进这个程序中
2.导入模块
import 模块
模块 是不带.py扩展的另一个python文件的文件名
下面是a.py文件
def fun1():pass
在另一个文件中想要使用a.py的fun1()函数
b.py
import a
a.fun1()//把a.作为fun1的前缀
3.使用别名导入模块import aaaaa as a
其中aaaaa.py是模块,在上面语句之后就可以a.fun1(),而避免aaaaa.fun1(),防止同名出现
4.导入模块的一部分
from a import fun1
#或者以别名形式导入一部分
from a import fun1 as f1
2包
为了使python应用更具有可拓展性,可以把多个模块组织成文件层次,称为包。
python学习——主要的代码结构,模块和包相关推荐
- Python学习笔记:常用内建模块7XML
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用第三方模块3
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用第三方模块(1)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用内建模块5
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
- Python学习笔记:常用内建模块2:collections
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- python学习第十三节:模块
1:什么是模块:模块是最高级比的程序组织单元,之前学习的类,可以封装属性和方法,函数,可以封装方法,而模块,可以封装一切 2:定义变量要用赋值语句,封装函数要用def语句,封装类需要用class语句, ...
- Python学习-基础篇5 常用模块+类与对象(1)
#random模块 1 import random2 3 print(random.random())#(0,1)----float 大于0且小于1之间的小数4 5 print(random.ran ...
- python学习笔记12-类代码编写细节
一.class语句 一般形式 class <name>(superclass,...): data=value def mothod(self,...): self.mem ...
最新文章
- 【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景
- 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
- wpa_supplicant wifi密码错误检测
- centos8安装MySQL依赖_centos8安装mysql8
- 区块链开发人员短缺?各大公司献上连环招
- 6.1、Android Studio的Android Monitor概览
- 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
- sb3转换exe_SB转exe或swf(sb3toSB2.rar
- lol一直显示服务器异常怎么办,lol服务器连接异常即将退出怎么解决
- 如何清除计算机的u盘使用记录,如何消除电脑上U盘使用记录
- 4.6 linux文件系统-虚拟文件系统VFS
- pygame UI 框架
- React中Mpegts播放器的使用
- Python数据分析(matplotlib、numpy、pandas)
- 小米 11 ultra旗舰版官方原版ROM系统MIUI12.5所有固件
- 如何写出高性能代码(四)优化数据访问
- Spring boot在线客服系统源码 在线坐席对话源码
- 护眼灯真的可以保护眼睛吗?2022双十二选哪款护眼灯对孩子眼睛好
- C#使用Emgu实现大图找图,并获得匹配区域
- 【喜讯】Apache DolphinScheduler 荣获 “2020 年度十大开源新锐项目”