文章目录

  • 前言
  • 一、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学习——主要的代码结构,模块和包相关推荐

  1. Python学习笔记:常用内建模块7XML

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  2. Python学习笔记:常用第三方模块3

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. Python学习笔记:常用第三方模块(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记:常用内建模块5

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  6. Python学习笔记:常用内建模块2:collections

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. python学习第十三节:模块

    1:什么是模块:模块是最高级比的程序组织单元,之前学习的类,可以封装属性和方法,函数,可以封装方法,而模块,可以封装一切 2:定义变量要用赋值语句,封装函数要用def语句,封装类需要用class语句, ...

  8. Python学习-基础篇5 常用模块+类与对象(1)

     #random模块 1 import random2 3 print(random.random())#(0,1)----float 大于0且小于1之间的小数4 5 print(random.ran ...

  9. python学习笔记12-类代码编写细节

    一.class语句 一般形式 class         <name>(superclass,...): data=value def mothod(self,...): self.mem ...

最新文章

  1. 【数学和算法】最小二乘法,SVD奇异值分解、LU分解的应用场景
  2. 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
  3. wpa_supplicant wifi密码错误检测
  4. centos8安装MySQL依赖_centos8安装mysql8
  5. 区块链开发人员短缺?各大公司献上连环招
  6. 6.1、Android Studio的Android Monitor概览
  7. 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
  8. sb3转换exe_SB转exe或swf(sb3toSB2.rar
  9. lol一直显示服务器异常怎么办,lol服务器连接异常即将退出怎么解决
  10. 如何清除计算机的u盘使用记录,如何消除电脑上U盘使用记录
  11. 4.6 linux文件系统-虚拟文件系统VFS
  12. pygame UI 框架
  13. React中Mpegts播放器的使用
  14. Python数据分析(matplotlib、numpy、pandas)
  15. 小米 11 ultra旗舰版官方原版ROM系统MIUI12.5所有固件
  16. 如何写出高性能代码(四)优化数据访问
  17. Spring boot在线客服系统源码 在线坐席对话源码
  18. 护眼灯真的可以保护眼睛吗?2022双十二选哪款护眼灯对孩子眼睛好
  19. C#使用Emgu实现大图找图,并获得匹配区域
  20. 【喜讯】Apache DolphinScheduler 荣获 “2020 年度十大开源新锐项目”

热门文章

  1. vrchat新手教程_VRChat入门指南| 最新电脑资讯
  2. 命令行发送SMTP协议邮件(163邮箱)
  3. 使用fasttext实现文本处理及文本预测
  4. 解决问题:xshell6评估已过期
  5. 音频编码和视频编码基础
  6. 视频如何做成gif动图?
  7. Java 之 Serializable 序列化和反序列化的概念,作用的通俗的解释
  8. RFC1952的部分翻译及原文 (转)
  9. 智能化生鲜配送系统,让采购更高效
  10. 【CSS】如何设置行距、段落间距、缩进格式