Python基础知识
1.首先明白python是一门什么语言?
面向对象的解释型编程语言。
编译型语言:编译型语言一般是不能跨平台的,也就是不能在不同的操作系统之间随意切换。
解释型语言:相比于编译型语言,解释型语言几乎都能跨平台
(类 同声传译)
2.python的优点
语法简单、开源、免费的、高级语言、解释型语言,能跨平台、面向对象的编程语言、功能强大(模块众多)、可扩展性强
3.Python的缺点:
运行速度慢、代码加密困难
4.在IDLE环境下的一些简单操作
快捷键 | 功能说明 |
Alt+p | 浏览历史命令(上一条) |
Alt+n | 浏览历史命令(下一条) |
Ctrl+F6 | 重启Shell,之前定义的对象和导入的模块全部失效 |
F1 | 打开Python帮助文档 |
Alt+/ | 自动补全前面曾经出现过的单词,如果之前有多个单词具有相同前缀,则在多个单词中循环选择 |
Ctrl+] | 缩进代码块 |
Ctrl+[ | 取消代码块缩进 |
Alt+3 | 注释代码块 |
Alt+4 | 取消代码块注释。 |
Tab | 补全单词 |
5.python的对象模型
对象类型 | 类型名称 | 示例 | 简要说明 |
数字 | int,float,complex | 1234,3.14,1.3e5, 3+4j | 数字大小没有限制,内置支持复数及其运算 |
字符串 | str | 'swfu', "I'm student", '''Python ''', r'abc', | 使用单引号、双引号、三引号作为定界符,以字母r或R引导的表示原始字符串 |
列表 | list | [1, 2, 3],['a', 'b', ['c', 2]] | 所有元素放在一对方括号中,元素之间使用逗号分隔,其中的元素可以是任意类型 |
字典 | dict | {1:'food',2:'taste',3:'import'} | 所有元素放在一对大括号中,元素之间使用逗号分隔,元素形式为“键:值” |
元组 | tuple | (2, -5, 6), (3,) | 所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素的话,后面的逗号不能省略 |
布尔型 | bool | True, False | 逻辑值,关系运算符、成员测试运算符、同一性测试运算符组成的表达式的值一般为True或False |
6.python中的变量
1).在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。(C语言中的变量就需要先声明否则无法使用)
例如语句
>>> x = 2
创建了整型变量x,并赋值为2,再例如语句
>>> x = 'Hello world.'
创建了字符串变量x,并赋值为'Hello world.'。
2).如果变量出现在赋值运算符或复合赋值运算符(例如+=、*=等等)的左边则表示创建变量或修改变量的值,否则表示引用该变量的值,这一点同样适用于使用下标来访问列表、字典等可变序列以及其他自定义对象中元素的情况。
>>> x = 3 #创建整型变量
>>> print(x**2)
9
>>> x += 6 #修改变量值
>>> print(x) #读取变量值并输出显示
9
3).字符串和元组属于不可变序列,不能通过下标的方式来修改其中的元素值,试图修改元组中元素的值时会抛出异常。
>>> x = (1,2,3)
>>> print(x)
(1, 2, 3)
>>> x[1] = 5
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
x[1] = 5
TypeError: 'tuple' object does not support item assignment
4).在Python中,允许多个变量指向同一个值,
例如:
>>> x = 3
>>> id(x)
1786684560
>>> y = x
>>> id(y)
1786684560
5).当为其中一个变量修改值以后,其内存地址将会变化,但这并不影响另一个变量,例如接着上面的代码再继续执行下面的代码:
>>> x += 6
>>> id(x)
1786684752
>>> y
3
>>> id(y)
1786684560
6).Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一块内存地址。
>>> x = 3
>>> id(x)
10417624
>>> y = 3
>>> id(y)
10417624
>>> x = [1, 1, 1, 1]
>>> id(x[0]) == id(x[1])
True
7).python中变量名的定义与其他语言相差无异;
7.Python中的数字
1).Python中的整数类型可以分为:
十进制整数如,0、-1、9、123
十六进制整数,需要16个数字0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f来表示整数,必须以0x开头,如0x10、0xfa、0xabcdef
八进制整数,只需要8个数字0、1、2、3、4、5、6、7来表示整数,必须以0o开头,如0o35、0o11
二进制整数,只需要2个数字0、1来表示整数,必须以0b开头如,0b101、0b100
2).浮点数又称小数
15.0、0.37、-11.2、1.2e2、314.15e-2
3).Python内置支持复数类型。
>>> a = 3+4j
>>> b = 5+6j
>>> c = a+b
>>> c
(8+10j)
>>> c.real #查看复数实部
8.0
>>> c.imag #查看复数虚部
10.0
>>> a.conjugate() #返回共轭复数
(3-4j)
>>> a*b #复数乘法
(-9+38j)
>>> a/b #复数除法
(0.6393442622950819+0.03278688524590165j)
8.python中的字符串
1).用单引号、双引号或三引号括起来的符号系列称为字符串
2).单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串
如:'abc'、'123'、'中国'、"Python"、'''Tom said, "Let's go"'''
3).字符串属于不可变序列
4).空串表示为''或 ""
5).三引号'''或"""表示的字符串可以换行,支持排版较为复杂的字符串;三引号还可以在程序中表示较长的注释。
6).字符串合并
>>> a = 'abc' + '123' #生成新对象
7).字符串格式化
>>> a = 3.6674
>>> '%7.3f' % a
' 3.667'
>>> "%d:%c"%(65,65)
'65:A'
>>> """My name is %s, and my age is %d""" % (‘Yzzy',21)
'My name is Yzzy, and my age is 21'
8).常用转义字符
转义字符 | 含义 | 转义字符 | 含义 |
\b | 退格,把光标移动到前一列位置 | \\ | 一个斜线\ |
\f | 换页符 | \’ | 单引号’ |
\n | 换行符 | \” | 双引号” |
\r | 回车 | \ooo | 3位八进制数对应的字符 |
\t | 水平制表符 | \xhh | 2位十六进制数对应的字符 |
\v | 垂直制表符 | \uhhhh | 4位十六进制数表示的Unicode字符 |
9).字符串界定符前面加字母r表示原始字符串,其中的特殊字符不进行转义,但字符串的最后一个字符不能是\。
>>> path = 'C:\Windows\noteYzzy.exe'
>>> print(path) #字符\n被转义为换行符
C:\Windows
oteYzzy.exe
>>> path = r'C:\Windows\noteYzzy.exe' #原始字符串,任何字符都不转义
>>> print(path)
C:\Windows\noteYzzy.exe
9.运算符和表达式
1).
运算符 | 功能说明 |
+ | 算术加法,列表、元组、字符串合并与连接,正号 |
- | 算术减法,集合差集,相反数 |
* | 算术乘法,序列重复 |
/ | 真除法 |
// | 求整商,但如果操作数中有实数的话,结果为实数形式的整数 |
% | 求余数,字符串格式化 |
** | 幂运算 |
<、<=、>、>=、==、!= | (值)大小比较,集合的包含关系比较 |
or | 逻辑或 |
and | 逻辑与 |
not | 逻辑非 |
in | 成员测试 |
is | 对象同一性测试,即测试是否为同一个对象或内存地址是否相同 |
|、^、&、<<、>>、~ | 位或、位异或、位与、左移位、右移位、位求反 |
&、|、^ | 集合交集、并集、对称差集 |
@ | 矩阵相乘运算符 |
2).Python运算符与功能
(1)+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接(仅限于相同类型之间)
>>> [1, 2, 3] + [4, 5, 6] #连接两个列表
[1, 2, 3, 4, 5, 6]
>>> (1, 2, 3) + (4,) #连接两个元组
(1, 2, 3, 4)
>>> 'abcd' + '1234' #连接两个字符串
'abcd1234'
(2).*运算符不仅可以用于数值乘法,还可以用于列表、字符串、元组等类型
>>> 2.0 * 3 #浮点数与整数相乘
6.0
>>> (3+4j) * 2 #复数与整数相乘
(6+8j)
>>> (3+4j) * (3-4j) #复数与复数相乘
(25+0j)
>>> "a" * 10 #字符串重复
'aaaaaaaaaa'
>>> [1,2,3] * 3 #列表重复
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1,2,3) * 3 #元组重复
(1, 2, 3, 1, 2, 3, 1, 2, 3)
(3).“/”和“//”分别表示除法和整除运算
>>> 3/5
0.6
>>> 3//5
0
>>> 3.0/5
0.6
>>> 3.0//5
0.0
(4).%运算符除去可以用于字符串格式化之外,还可以对整数和浮点数计算余数。
>>> 3.1%2
1.1
>>> 6.3%2.1
2.0999999999999996
>>> 6%2
0
>>> 6.0%2
0.0
(5).关系运算符
>>> 1 < 3 < 5 #等价于1 < 3 and 3 < 5
True
>>> 'Hello' > 'world' #比较字符串大小
False
>>> [1, 2, 3] < [1, 2, 4] #比较列表大小
True
>>> 'Hello' > 3 #字符串和数字不能比较
TypeError: unorderable types: str() > int()
(6).成员测试运算符in用于成员测试,即测试一个对象是否为另一个对象的元素。
>>> 3 in [1, 2, 3] #测试3是否存在于列表[1, 2, 3]中
True
>>> 5 in range(1, 10, 1) #range()生成指定范围数字
True
>>> 'abc' in 'abcdefg' #子字符串测试
True
>>> for i in (3, 5, 7): #循环,成员遍历
print(i, end='\t')
- 5 7
(7).位运算符只能用于整数,其内部执行过程为:首先将整数转换为二进制数,然后右对齐,必要的时候左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。
>>> 3 << 2 #把3左移2位
12
>>> 3 & 7 #位与运算
3
>>> 3 | 8 #位或运算
11
>>> 3 ^ 5 #位异或运算
6
(8).集合的交集、并集、对称差集等运算借助于位运算符来实现,而差集则使用减号运算符实现(注意,并集运算符不是加号)。
>>> {1, 2, 3} | {3, 4, 5} #并集,自动去除重复元素
{1, 2, 3, 4, 5}
>>> {1, 2, 3} & {3, 4, 5} #交集
{3}
>>> {1, 2, 3} ^ {3, 4, 5} #对称差集
{1, 2, 4, 5}
>>> {1, 2, 3} - {3, 4, 5} #差集
{1, 2}
(9).逻辑运算符and和or具有惰性求值特点。(与C中与或非类似)
>>> 3>5 and a>3 #注意,此时并没有定义变量a
False
>>> 3>5 or a>3 #3>5的值为False,所以计算后面表达式
NameError: name 'a' is not defined
>>> 3<5 or a>3 #3<5的值为True,不用计算后面表达式
True
>>> 3 and 5 #将最后一个计算的表达式的值作为整个的值
5
>>> 3 and 5>2
True
>>> 3 not in [1, 2, 3] #逻辑非运算not
False
10.python中的内置函数
后续详讲
11.python中对象的删除
在Python中具有自动内存管理功能,Python解释器会跟踪所有的值,一旦发现某个值不再有任何变量指向,将会自动删除该值。可以使用del命令来显式删除对象并解除与值之间的指向关系。
1).del命令无法删除元组或字符串中的元素,只可以删除整个元组或字符串,因为这两者均属于不可变序列。
>>> x = (1,2,3)
>>> del x[1]
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
del x[1]
TypeError: 'tuple' object doesn't support item deletion
>>> del x
>>> print(x)
Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
print(x)
NameError: name 'x' is not defined
12.基本输入输出
用Python进行程序设计,输入是通过input( )函数来实现的,input( )的一般格式为:
x = input('提示:')
该函数返回输入的对象。可输入数字、字符串和其它任意类型对象。
13.模块导入与使用
- .Python默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,pip是管理模块的重要工具。
- .在Python启动时,仅加载了很少的一部分模块,在需要时由程序员显式地加载(可能需要先安装)其他模块。
- .减小运行的压力,仅加载真正需要的模块和功能,且具有很强的可扩展性。
- .可以使用sys.modules.items()显示所有预加载模块的相关信息。
- .import 模块名
>>>import math
>>>math.sin(0.5) #求0.5的正弦
>>>import random
>>>x=random.random( ) #获得[0,1) 内的随机小数
>>>y=random.random( )
>>>n=random.randint(1,100) #获得[1,100]上的随机整数
- .可以使用dir函数查看任意模块中所有的对象列表,如果调用不带参数的dir()函数,则返回当前所有名字列表。
- .可以使用help函数查看任意模块或函数的使用帮助。
- .from 模块名 import 对象名[ as 别名] #可以减少查询次数,提高执行速度 如:import numpy as np
(有需要numpy库入门资料的可以call我哈)
14.python代码规范
(1)缩进
类定义、函数定义、选择结构、循环结构,行尾的冒号表示缩进的开始
python程序是依靠代码块的缩进来体现代码之间的逻辑关系的,缩进结束就表示一个代码块结束了。
同一个级别的代码块的缩进量必须相同。
一般而言,以4个空格为基本缩进单位
(2)注释
一个好的、可读性强的程序一般包含30%以上的注释。常用的注释方式主要有两种:
以#开始,表示本行#之后的内容为注释
包含在一对三引号'''...'''或"""..."""之间且不属于任何语句的内容将被解释器认为是注释
(3)每个import只导入一个模块
(4)如果一行语句太长,可以在行尾加上\来换行分成多行,但是更建议使用括号来包含多行内容。
(5)必要的空格与空行
运算符两侧、函数参数之间、逗号两侧建议使用空格分开。
不同功能的代码块之间、不同的函数定义之间建议增加一个空行以增加可读性。
(6)适当使用异常处理结构进行容错,后面将详细讲解。
(7)软件应具有较强的可测试性,测试与开发齐头并进。
15.python文件名
- .py:Python源文件,由Python解释器负责解释执行。
- .pyw:Python源文件,常用于图形界面程序文件。
- .pyc:Python字节码文件,无法使用文本编辑器直接查看该类型文件内容,可用于隐藏Python源代码和提高运行速度。对于Python模块,第一次被导入时将被编译成字节码的形式,并在以后再次导入时优先使用“.pyc”文件,以提高模块的加载和运行速度。对于非模块文件,直接执行时并不生成“.pyc”文件,但可以使用py_compile模块的compile()函数进行编译以提高加载和运行速度。另外,Python还提供了compileall模块,其中包含compile_dir()、compile_file()和compile_path()等方法,用来支持批量Python源程序文件的编译。
- .pyo:优化的Python字节码文件,同样无法使用文本编辑器直接查看其内容。可以使用“python –O -m py_compile file.py”或“python –OO -m py_compile file.py”进行优化编译。Python 3.5不再支持.pyo文件。
- .pyd:一般是由其他语言编写并编译的二进制文件,常用于实现某些软件工具的Python编程接口插件或Python动态链接库。
(大佬们这是我第一次写博客,如果有误或者侵权的地方,联系修改或删除!谢谢^_^)