学习平台:B站
学习链接:python编程基础入门-廖雪峰_哔哩哔哩_bilibili
廖雪峰的官方网站:安装Python - Python教程 - 廖雪峰的官方网站
up主:放羊Wa
1)解释器和编译器的区别
解释器是一句一句翻译执行,而编译器是全部拿过来执行。
2)基本的语句
输出语句:(以下是python 2 的内容)
print 1,2,3 输出结果为:1 2 3
a = 100
print a 输出结果为:100
print "a=",a 输出结果为:a=100
print "a=%d" % a
如果是python 3 ,打印的时候要用括号括起来:
print( 值1, 值2, 值3 )
(我目前在用的是3.11.11,现在好像连4都已经出来了)
3)交互模式
在terminal中敲出python,回车后出现三个箭头,也就是: >>>,也就是进入了交互模式,可以一行一行地运行了。
4)数据类型和运算符
在python中,变量是关联对象的一个符号。
它们就像java中定义的对象一样,有自己的方法,python里任何一个东西都被当成了一个对象。
python的核心数据类型和内置对象为:数字类型、字符串str、布尔类型bool、空值None。
数字类型包括:整型(int)、浮点型(float)、复数(complex)。
数字常量的表示:
十进制:0,100,-5,99999999999999999999999
二进制(0b开头):0b1101 ——支持二进制非常少见了
八进制(0o开头):0o66(54),0o11(9)
十六进制(0x开头):0x1A或0x1a(26),0x1a2b34d(27439949),0xFF(255)
这些进制打印的时候默认都是按照十进制打印的。
浮点数的表示:
十进制:3.14,3.0,3.,.14(但是python 3不支持只有一个小数点)
科学计数法:(小数e/E + n次幂,移动小数点用的)
6.18E-1 (0.618)
2.9979e8(299790000.0)
2.9979e-08(2.9979e-08)
复数(complex)的表示:(格式为 a+bj / a+bJ,也就是实部加虚部)
1+2j(打印出来有括号 (1+2j) )
8.2j( 8.2j 没有实部只有虚部也是可以的)
1+3J( (1+3j) )
布尔类型(bool)的表示:
只有两种类型:真True (值为1), 假False(值为0)
即使是这样也是可以运行的:
if(1):
print(True)
空值(None)的表示:
这是一个特殊的常量,不表示任何类型。它和其他类型比较永远返回空值。
算术运算符:
加减乘除一样,此外还有一个整数除:地板除 //
10/3 = 3.3333333333333335 (这里小数和整数的转换不太一样,,所以会有 5)
10 // 3 = 3
幂运算 **
a = 2
a ** 0.5 = a ** ( 1/ 2 ) = 1.4142135623730951(此时是平方根)
a ** 2 = 4(此时是平方)【感觉就像是java里面的 Math.pow(a, 2) 】
is / is not 运算符:
is判断两个变量是否绑定同一对象,is not正相反。
a is b -------> True (之前让a = b了)
del语句:
用于删除对象,同时解除与对象的关联,如果可能则释入对象。
del a(删除了a和它绑定的数)
复合运算符:
同java
比较运算符:
大部分同java(嗯,python 3.11.11也是支持 != 的)
这里可以直接判断一个数是否在一个区间内:
20 < a < 100 (因为a值为20,所以返回False)
if 20 > a: print(True)
生成对象的函数:
float(obj) 用于字符串或数字转换为浮点数,如果不给出参数,则返回0.0
int( x[, base = 10 ] ) 用数字或字符串转换为整数,如果不给出参数,则返回0
complex( r = 0.0, i = 0.0 ) 用数字生成一个复数(实部为r,虚部为i)
bool( x ) 用 x 生成一个布尔值(True / False)
str( obj = ' ' ) 用对象转换为字符串
bool函数返回假值False的情况:
False 逻辑假值
None 空值
0,0.0,0j 所有的数字0
type运算符:
type(b) 可以返回指定的对象类类型。
其他:
"" 空字符串
() 空元组
[] 空列表
{} 空字典
set() 空集合
5)数据变化
代码段、数据段、堆、栈(后三个可以变,但是代码段一旦运行就不能变了)
b = 2
这里 a = b,b就是一个表达式,用a去复制b。但这里因为是引用类型的,所以不会在空间中产生新的数据。
a = [1,2,3,4] (应该是数组类型)
b = a
print(b) 就会打印为 [1,2,3,4]
a[0] = 100 则a的值变为 [100,2,3,4]
这种情况被称为“浅拷贝”(copy),虽然节省空间,但有一个坏处就是一荣俱荣,一损俱损。想要安全就要用到深拷贝(deepcopy)。
在Python中,可以使用copy模块的copy()函数来实现浅拷贝
import copy
original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)
深拷贝可以通过copy模块的deepcopy()函数来实现
import copy
original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)
python支持多个对象赋值:
a = 10; b = 20; c = "1234" 或者 a,b,c = 10, 20, "1234"
有一个地方要注意,python中不可以直接把两个表达式连在一起成为字符串,也就是:
c = 123+"123" 会报错。
可以改成 c = 123 + int("123")
这里还有一个泛型转换:c = a + int( 23.5242 ) = 33
如果是字符串传进去会包错:c = a + int( "497591" )
在 Python 中,泛型允许我们定义一个结构,比如一个类或一个函数,它可以适应多种类型而不仅仅是一个。这种方式可以保持代码的灵活性和通用性,同时仍然受益于类型检查的优势。
6)常用函数
abs() 取x的绝对值
round( number[ , ndigits ] ) 对数值进行四舍五入,ndigits是小数向右取整的位数。
例如:round( 3.52792, 3 ) = 3.528
pow( x y , z=None ) 相当于 x ** y 或者 x ** y % z
help(函数名) 帮助函数,可以调出一个函数的帮助文档
7)语句
语句由一些表达式构成,通常一条语句可以独立的完成一部分事情并形成结果。(达成不同的结果使用的是控制语句,一类是分支、一类是循环)【语句是构成程序的最基本单位】
条件语句:
if 真值表达式:
语句1
elif 真值表达式:
语句2
...
else:
语句n
这里else和elif都是子句。
pass语句:
又名空语句,用来填充语法空白,表示略过,什么也没做
pass