[Python]Python入门笔记:语法基础
Python笔记
一、基本语法
1.1 注释
- 文档注释: - """contents"""
 
- 多行注释: - '''
 contents
 '''
 
- 单行注释: - # contents
 
1.2 运算符、数与基本运算
- 运算符: - +, -, *, / , //, **, %
 逻辑运算符
 not
 and:条件或短路运算符
 or:条件或短路运算符
 
- 运算优先级(无圆括号的情况下): - **(指数运算)
- *, / , // ,%
- +, -
 
- 科学计数法: - 5.0534E(e)+2,E(e)表示5.0534*(10^2)。
- (Python 3.6)可以使用下划线给数字分组(Java也可)。 - universe_age = 14_000_000_000
 
1.3 变量和常量
1.3.1 变量
- 同时赋值: - var1, var2 = exp1, exp2- 因此,可以用 - y, x = x, y来交换x, y的值。
定义全局变量
① 直接在函数外定义全局变量。
② 在函数内使用global语句定义:global var 。
1.3.2 常量
- 常量:手动大写,没有内置常量类型。
1.4 格式化(数和字符串)
format()函数
- 返回字符串。 
- 语法: - format(item, format-specifier)
- 格式化标识符(format-specifier): - "(width).(precision)(转换码)"
或者:
	① "{:说明符}".format(item)
	② [Python 3.6] f"{:说明符}"
- 总结 - 说明符 - 转换码 - 格式化的对象 - 格式 - 备注 - "10.2f" - f - 浮点数 - 宽度为10,精度为2 - 小数点 - .占1个宽度- "10.2e" - e - 浮点数(用科学计数法表示) - 宽度为10,精度为2 - e,- +/- -各占一个宽度- "5b/o/d/x" - b/o/d/x - 二/八/十/十六进制整数 - 宽度为5 - "10.2%" - % - 数 - 将数格式化为百分数 - %占一个宽度- "50s" - s - 字符串 - 宽度为50 - "<..." - 左对齐 - ">..." - 右对齐 
- 格式化浮点数(f): - ① 小数点 - .占1个宽度。
- 格式化成科学计数法(e) - ① - e,- +/- -各占一个宽度。
- 格式化成百分数(%) - %占一个宽度
- 格式化整数(b,o,d,x) 
- 格式化字符串(s) 
- 调整格式(<,>) - ① - <左对齐,- >右对齐。- ② 数默认向右对齐,字符串默认向左对齐。 
- 格式化的问题 - ① 如果item的宽度大于格式符里指明的宽度,宽度会自动增加。 - ② 可以省略宽度,默认为0。 
1.5 三种基本程序错误
三种程序错误:
- 语法错误
- 运行时错误(FileNotFoundError等)
- 逻辑错误
1.6 其他
- 可以在一行的结尾处放置一个 \继续符号来表示语句继续到下一行。
二、输入与输出
2.1 控制台
输入
- input()函数 - 格式:input("提示用户输入的信息")
- 读取的结果是字符串。
 
- 格式:
- 把读取的字符串转换成数值类型: - ① int()函数:不能用于非整型字符串。可以有先导0 - 格式: - num = int(input("enter a number: "))
- int()还可以用于类型转换(浮点型→整型),舍弃小数部分。(若不舍弃用round函数)- var = 5.7
 a = round(var) # a = 6
 
 
 ② eval()函数:可用于整型和浮点型字符串。不能有先导0
			○ 格式:num = eval(input("enter a number: "))
输出
- print()函数 - 不换行输出: - print(item_1,item2, ..., end = "any ending string" )
- 换行输出: - print(item1, item2, ...)
 
- 字符串连接:使用 - +。
2.2 文件
2.2.1 输入输出重定向
- 输入重定向:
python xxxx.py < textName.txt
- 输出重定向:
python xxxx.py > output.txt
例:
python xxxx.py < textName.txt > output.txt
从 textName.txt 中获取数据,把数据储存在 output.txt 中。
2.2.2 文件的输入与输出 (I/O)
| 模式 | 描述 | 
|---|---|
| t | 文本模式 (默认)。 | 
| x | 写模式,新建一个文件,如果该文件已存在则会报错。 | 
| b | 二进制模式。 | 
| + | 打开一个文件进行更新(可读可写)。 | 
| U | 通用换行模式(不推荐)。 | 
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 | 
| rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 | 
| r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 | 
| rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 | 
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 | 
| wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | 
| w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 | 
| wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | 
| a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | 
| ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | 
| a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 | 
| ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 | 

| 模式 | r | r+ | w | w+ | a | a+ | 
|---|---|---|---|---|---|---|
| 读 | + | + | + | + | ||
| 写 | + | + | + | + | + | |
| 创建 | + | + | + | + | ||
| 覆盖 | + | + | ||||
| 指针在开始 | + | + | + | + | ||
| 指针在结尾 | + | + | 
文件读取
- 读取整个文件: - with open('文件名filename', '模式') as f: # 一般用f来表示文件对象
 value = f.read()
 - with,在不再需要访问文件时将其关闭。
- 有效范围:缩进行。
 
- open()函数,以相应模式打开相应文件。
- read()方法,读取文件的全部内容。
 
- with,在不再需要访问文件时将其关闭。
- 逐行读取文件:for循环 - with open(filename) as f:
 for line in f:
 print(line)
 
- 创建关于包含文档内容的列表: - with open(filename, encoding='utf-8') as f:
 lines = f.readlines() for line in lines:
 print(line.rstrip)
 
- *encoding参数:在系统的默认编码和需要读取的文件使用的编码标准不一致时,必须使用。如, - utf-8,- utf-16,- gbk等。
写入文件('w')
- 第二个实参——写入模式:读取模式('r')、写入模式('w')、附加模式('a')、读写模式('r+')。 
- 附加模式('a')、写入模式('w')下,文件不存在,将会自动被创建。 
- 文件路径 - 代码中表示路径时,可以使用/和\\。
 
- 代码中表示路径时,可以使用
- 文件对象方法: - filename.write('text')。
- split()方法:以空格为分隔符将字符串分成多个部分。可以用于粗略统计文本字数。 
三、数据类型
3.1 数据类型
字符和字符串
 建议:对单个字符使用 'a',对多个字符使用 "abc"。
- 转义字符: - \f 换页符 
- \r 回车符:把光标移到同一行的第一个位置 
 
- 字符串、数字的转换: - ord(char)函数:返回char对应的ASCII码值。
- chr(code)函数:返回code对应的字符。
- str()函数:把数字转换为一个字符串。
 
- 在字符串中使用变量: - ①(Python 3.6)f字符串格式: - var = f"{var_1} {var_2}"
 - ②(Python 3.5及更早)format方法: - var = "{} {}".format(var_1, var_2)
 
- 字符串中的空白: - 空白符包括:' ', \t, \f, \r, \n等。 - lstrip() # 右侧right的空白
 rstrip() # 左侧left的空白
 strip() # 左右两侧
 
布尔表达式和条件表达式
- 布尔表达式 - 德摩根律 - not (a and b) not a or not b - not (a or b) not a and not b 
 
- 条件表达式 - 格式:expression_1 if boolean_expression else expression_2
 
- 格式:
3.2 类型转换
- bool()函数:非零数→True, 0 → False。
- int()函数,- float()函数。
四、循环
while循环,for循环。
4.1 while 循环:条件控制循环
- 注意: - 在循环控制中不要使用浮点值来比较相等 
- 格式: - while expression:
 # 循环体
 
- 哨式控制:指定一个哨兵值,表明输入的结束。 - while var != 0:
4.2 for 循环:计数器控制循环
- 语法: - for var in sequence:
 # 循环体
 
- range()函数: - 注意:range函数中的值必须是整数。 - range(a)等价于- range(0,a)。
- range(a, b, k)中,k为步长。- ① 当k为正整数时,序列的最后一个数小于 b ; 
 - for var in range(3, 9, 2):
 print(var)
 '''
 输出为:
 3
 5
 7
 '''
 -  ② 当k为负整数时,序列的最后一个数大于 b 。 - for var in range(5, 1, -1):
 print(var)
 '''
 输出为:
 5
 4
 3
 2
 '''
 
五、函数
注意
- 位置参数 在 关键字参数 之前。 
- 非默认参数 在 默认参数 之前。 
- Python 不支持定义两个同名的参数,但可以通过不同的方式来调用函数。 - 如果定义了同名的函数,后定义的函数会取代之前定义的函数。 
- 定义全局变量: - ① 直接在函数外定义全局变量。 
 ② 在函数内使用global语句定义:- global var。
5.1 函数的定义
- 定义格式: - def 函数名(参数):
 """可以在此处写有关此函数的相关内容"""
 # 函数体
 
- 传递参数 - 位置参数 - 含义:调用函数时传入实际参数的数量和位置都必须和 定义函数时 保持一致。
 
- 关键字参数,例: - def function_name(argu1ment):
 ... function_name(argument = '...')
 
 
- 默认参数:给形参指定默认值,必须在形参列表的末尾。 
5.2 分类:返回值
根据函数是否有返回值,可以将函数分为 带返回值函数 和 无返回值函数。
带返回值函数
- 可以返回多个值。 - return a, b
 - var_1, var_2 = function(...)
 
无返回值函数
- 默认返回一个特殊值 None。
- 无返回值函数可以用 return 语句,一般为 return None或者return。
5.3 内置函数、math模块中的部分函数
- 内置函数 - | 函数 | 描述 | 例 / 备注 | 
 | ------------------------------------- | ------------------------------------------------------------ | ---------------------- |
 | abs(x) | 返回x的绝对值 | |
 | max(iterable, [, key, default]) | 返回最大值,可指定- key=len等 | iterable:可迭代的对象 |
 | min(x1,x2,...) | 返回最小值 | |
 | pow(a,b) | 返回ab的值,类似于a**b | |
 | round(x) | 返回与x最接近的整数。
 如果x与两个整数的接近程度相同,则返回偶数值 | round(4.5)=4 |
 | round(x,n) | 保留小数点后n位小数的浮点值 | round(5.446,2)=5.47 |
- math模块中的数学函数(import math)和常量 - (1) 数学函数: - 函数 - 描述 - 例 - fabs(x) - 将 x 看作一个浮点数,返回它的绝对值 - fabs(-2) = 2.0 - ceil(x) - 返回 x 向上取整的整数 - ceil(-2.1) = -2 - floor(x) - 返回 x 向下取整的整数 - floor(-2.1) = -3 - exp(x) - 返回 \(e^{x}\) 的值 - log(x) - 返回 \(log_{10}x\) 的值 - log(x, base) - 返回 \(log_{base}{x}\) 的值 - sqrt(x) - 返回 x 的平方根 - sin(x), cos(x), tan(x) - 返回 x 的正弦值/余弦值/正切值, 
 x 是角度的弧度值- asin(x), acos(x) - 返回 x 对应的弧度值 - degrees(x) - 将 x 从弧度转换为角度 - degrees(1.57)=90 - radians(x) - 将 x 从角度转换为弧度 - (2) 常量: - math.pi - math.e 
5.4 random模块——生成随机数的部分函数
import random
- randrange(x, y),生成一个大小范围在 \([x, y)\) 内的整数。
- randint(x, y),生成一个大小范围在 \([x, y]\) 内的整数。
- random(),生成一个范围在 \([0,\space1.0]\) 之间的浮点数。
六、对象和方法
6.1 对象
- id()函数,返回该对象的id。(在程序执行的过程中,id不会改变)
- type()函数,返回对象的类型/类。(type和class的含义相同)
6.2 方法
- 类中的函数称为方法。 
- 调用方法的方式: - object.method()
八、特殊模块
8.1 turtle模块
8.2 time模块
- time.time()得到UNIX时间点(1970.01.01 00:00:00)
8.3 math模块
8.4 random模块
[Python]Python入门笔记:语法基础的更多相关文章
- C#快速入门笔记(1)——基础语法
		C#快速入门笔记(1)——基础语法 总体框架: 
- Python爬虫入门有哪些基础知识点
		1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ... 
- 1 TensorFlow入门笔记之基础架构
		------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ... 
- Python数据分析入门之pandas基础总结
		Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ... 
- Python 3 学习笔记之——基础语法
		1. a, b = a, a + b 先计算右边表达式,然后再同时赋值给左边. 2. 条件控制和循环语句 条件控制 if condition_1: statement_block_1 elif con ... 
- python数据分析入门笔记[1]
		1.Numpy: Numpy是python科学计算的基础包,它提供以下功能(不限于此): (1)快速高效的多维数组对象naarray (2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数 ( ... 
- Python爬虫入门:爬虫基础了解
		有粉丝私信我想让我出更基础一些的,我就把之前平台的copy下来了,可以粗略看一下,之后都会慢慢出. 1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫 ... 
- python的学习笔记01_4基础数据类型列表 元组 字典 集合  其他其他(for,enumerate,range)
		列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ... 
- thread/threading——Python多线程入门笔记
		1 什么是线程? (1)线程不同于程序. 线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制: 多线程类似于同时执行多个不同程序. (2)线程不同于进程. 每个独立的进程有一个程 ... 
- Python知识点入门笔记——特色数据类型(元组)
		元组(tuple)是Python的另一种特色数据类型,元组和列表是相似的,可以存储不同类型的数据,但是元组是不可改变的,创建后就不能做任何修改操作. 创建元组 用逗号隔开的就是元组,但是为了美观和代码 ... 
随机推荐
- 用 vite 构建项目,同时支持微前端
			得益于 esbuild 的超高性能,vite 在诞生之初就备受关注,且一直保持着活跃的开发迭代.截至目前,vite 已经迭代到了 2.7.10 版本,各方面也基本具备了在生产使用的条件.这段时间,我在 ... 
- 记一次 .NET 某药品仓储管理系统 卡死分析
			一:背景 1. 讲故事 这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下: 从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决起来相对简 ... 
- CSS3 动画3D视角下 旋转圆环
			首先是 transform 属性: transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 加上对应属性则可得到3D透视效果下的形态 本次以圆形( ... 
- [Jetson Nano]Jetson Nano快速入门
			NVIDIAJetsonNano开发套件是适用于制造商,学习者和开发人员的小型AI计算机.相比Jetson其他系列的开发板,官方报价只要99美金,可谓是相当有性价比.本文如何是一个快速入门的教程,主要 ... 
- 一次神奇的Azure speech to text rest api之旅
			错误Max retries exceeded with url: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='%20e ... 
- RT-Thread移植到stm32
			一.移植RT-Thread准备 RT-Thread源码 源码版本和下载方式,可以参考RT-Thread移植入门学习. keil软件 STM32工程项目模板 因为每一厂家提供的库文件可能有一些区别,在移 ... 
- 使用kubeadm搭建k8s集群
			1.初始化集群信息 这里我才用了两台虚拟机来搭建集群,一个master,一个node 角色 IP地址 组件 master 192.168.126.137 docker, kubectl, kubead ... 
- Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z is abstract
			HTTP Status 500 - Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method ... 
- setcontext+orw
			setcontext+orw 大致可以把2.27,2.29做为两个分界点. 我们先来讨论 2.27 及以下的 setcontext + orw 的写法. 首先 setcontext 是什么?了解过 S ... 
- iBooker AI+财务提升星球 2020.4 热门讨论
			比特币量化套利的心路历程(附python量化招聘)(分享自知- 如何选择一份好的工作? 你知道为什么大家都想去好公司吗? 不- #财务知识# 可转债套利 辉丰转债128012套利之三个知道- #财务知 ... 
