【Python】基础速通

目录

一、变量

◆01 变量

>>2 变量名和关键字

>>3 动态类型语言

>>总结

二、数据类型

>>主要内在数据类型:

>>1 数值类型

>>2 列表

>>3 元组

>>4 字符串

>>.转义字符 

>>5 集合

>>6 字典

>>总结 

三、 类型转换和输入

>>1 隐式类型转换

>>2 显式类型转换

>>3 输入 -- 内置函数input()

四、运算符和表达式

1.应用方法

2.运算符的分类

算术运算符

2.比较运算符

3.逻辑运算符

4.位运算符

相关:计算机中正数和负数的存储形式:

5.赋值运算符

6.成员运算符: in、not in

7.身份运算符:is、is not

3 运算符的优先级

>>运算符的优先级

>>总结

五、可变对象和不可变对象

1.假如我们对 不可变类型 tuple 元组进行修改会怎样?

2.下列代码呢?

3.如果1个变量指向的是1个可修改的对象,那么可以通过这个变量修改它指向的对象,而这个时候并不会创建新对象

>>总结

六、控制语句

1.if条件语句

if....else

if...elif...else

2.循环语句

1.while循环语句

 2.for循环语句

 什么是可迭代对象?

函数range():range(strat,stop[,step])

 3.break语句

4.continue语句

 5.else语句

6. pass语句 

 总结


一、变量

◆01 变量


>>变量是对象的引用:

  • 变量本身并不存储具体数值,它们仅是对象的引用。可以用赋值运算符=修改变量引用的对象,使变量引用其他对象。
  • 不能使用一个未定义的变量(未说明引用哪个对象)。例如:
    print(va) # va未被定义
    将产生NameError(名字错误)的语法错误:【Python】基础速通_第1张图片

>>Python中有两个运算符==和is。

  • 前者用于比较对象的值是否相等,后者用于判断两个对象是否为同一个。

>>True和False是Python的bool(布尔)类型的两个值

>>函数type():返回类型

a = 100
b = 100
print(type(a))
print(type(b))
print(a == b, type(a == b))
print(a is b, type(a is b))

【Python】基础速通_第2张图片

>>可以用函数id()得到a、b的内存地址。例如:

print(id(a),'    ',id(b))

上文,a,b都指向同一地址(100),地址相同


>>2 变量名和关键字

变量名应该尽量直观易懂。

  • 例如,应使用“PI”而不应用“sdfduzwlf2”来表示圆周率。

  • 变量名只能包含字母、数字和下画线,且不能以数字开头。同时,变量名不能和已经被Python语言使用的名字(关键字)相同。

>>3 动态类型语言

>>在静态类型语言,如C语言中,定义变量时必须指明其数据类型

>>Python是一个动态类型语言,变量名仅是一个对象的名字,并不是占据一块内存的那个对象本身,一个变量名可以随时指向不同的对象,直到程序运行时,才能根据其指向的对象知道该对象的数据类型。

>>总结

  1. 通过赋值运算符  “=” 将一个对象赋值给一个变量名用于定义一个变量。
  2.  变量仅是对象的名字,或者说,变量引用了对象。一个对象既可以对应多个变量(名),也可以随时用赋值运算符=使一个变量(名)指向另外的对象,即变量不会“从一而终”。
  3. 可以用等于运算符==判断两个对象的值是否相等,用is运算符判断两个对象是否为同一个对象。当然,也可以用函数print()打印两个对象的id,查看它们是否是同一个对象。
  4. 变量名只能包含字母、数字和下画线,且不能以数字开头,更不能与Python关键字相同。
  5. Python是动态类型语言,只有运行时根据变量引用的对象才能知道这个对象的数据类型。

二、数据类型

>>主要内在数据类型:

>>1 数值类型

>>可分为int(整型)、float(浮点型)、complex(复数类型)、bool(布尔类型)。

>>只要计算机内存足够,Python的整型的长度就可以任意长。但浮点型的值小数点后的精度不超过15位,而复数型的值总是写成x+yi形式。

>>2 列表

>>list是一个数据元素的有序序列,定义列表时用一对左右方括号[ ]包围,元素之间用逗号隔开。list中的元素可以是不同的类型。

>>因为list是一个有序序列,因此,对于list对象可以用下标运算符[ ]访问它的一个元素或一系列连续的元素。

>>还可以通过向下标运算符[ ]传递起始位置和结束位置的两个下标,返回连续多个元素组成的子列表(不包含结束位置的元素)

>>list对象是可修改的(mutable)

>>为指定下标范围内的元素赋值一个空的list[ ],相当于删除这个范围内的元素

>>必须给下标范围内的元素赋值一个list对象,如果赋值非list对象则会出错。例如:

li = [2,3.14,8,'python',6,'hello',2]
# li[2:5] = [10,22] # 不包括 5 
# 上面输出为:[2, 3.14, 10, 22, 'hello', 2]
li[2:5] = 5
print(li)

【Python】基础速通_第3张图片

产生TypeError(类型错误)

>>3 元组

>>和list一样,元组(tuple)也是一个有序序列

>>但tuple是不可修改

>>创建tuple时用圆括号()

【Python】基础速通_第4张图片

>>可以用下标运算符[ ]访问tuple的元素,但不可以通过下标修改tuple对象,否则产生下列类型错误(TypeError)

>>只有一个元素的tuple的最后必须加一个逗号,如(25,)表示一个tuple,而(25)表示一个整数。

>>4 字符串

>>字符串是UniCode字符的有序序列,可以用置于首尾的单引号或双引号包围一个字符序列来表示字符串

>>单引号表示的字符串中可以包含双引号字符,但不能直接包含单引号。双引号表示的字符串中可以包含单引号,但不能直接包含双引号

>>str类型的对象是不可修改的(immutable),否则产生“字符串对象不支持赋值”的TypeError(类型错误):

【Python】基础速通_第5张图片

>>转义字符 

>>用\'表示单引号字符,这种前面加反斜杠字符表示字符'的\'称为“转义字符”

>>转义字符\\表示的是单个斜杠字符\

>>转义字符通常可以表示各种不可见的字符,如控制字符

>>\t表示“制表符”,\n表示“换行符”

>>函数print()在遇到这些字符时会执行特定的动作。例如,对于制表符\t,就输出固定个数的空格,对于换行符\n就换到新的一行。

【Python】基础速通_第6张图片

>>5 集合

>>set是不包含重复元素的无序集合

>>用左右花括号{ },包围的,以逗号隔开的一组元素

>>因为集合无序,所以不能用下标操作其中的元素

>>set中不能有相同值的元素。

demo = {1,2,3,4,5,6,7,1,2,3,4,5,6}
print(demo)

可以看到,重复的元素并没有输出

>>集合是根据其元素的哈希值存储元素的,所以无法计算哈希值的对象不能作为集合的元素。

list对象是无法计算哈希值的,所以不能作为集合的元素,否则产生“list不是可哈希的类型”的TypeError(语法错误):

【Python】基础速通_第7张图片

“unhashable”  不可哈希的类型:’list‘ 

>>6 字典

>>dict是一个“键-值”对 的无序集合。

>>dict中的每个元素都以“键:值(key:value)”的形式存储

>>需要通过key(键,也称关键字)才能访问dict中key对应的值(value)。

错误类型:KeyError 

dic = {'A':65,'B':66,'C':67}
print(dic['A'])  # 65

# 下面两个键值不存在,报错 ‘KeyError'
# print(dic[0])
print(dic['D'])

【Python】基础速通_第8张图片

>>总结 


• Python的内在数据类型包括int、float、complex、bool,str,list、tuple、set、dict等。
• list对象是可以修改的,而str和tuple等对象是不可修改的。
• 对于有序序列数据类型,如str、list、tuple,可以通过下标访问其中的一个或多个元素,而无序的set则不能用下标访问其中的元素

三、 类型转换和输入

>>1 隐式类型转换

>>Python会自动将一个类型转为另外一个类型。

例如,在进行整数和浮点数运算时,Python会自动将整数转为浮点数。同时,两个整数相除时也会自动转为浮点数的相除。

>>但是,如果一个数(整数、浮点数等)和一个字符串想加,就不会进行“隐式类型转换”。

a=100
b = 1.3
print(a+b,type(a+b))
s = '6asdad'
print(a+s)

【Python】基础速通_第9张图片

将产生“不支持int和str的加法运算”的TypeError(类型错误):


>>2 显式类型转换

>>内置函数str()将数值类型(int、float、complex)的值转为字符串str类型

>>内置函数float()既可将一个合适格式的字符串类型的值转为float类型的值,也可将一个int类型的值转为float类型的值。

>>内置函数int()既可将一个合适格式的字符串类型的值转为int类型的值,也可以将一个float类型的值转为int类型的值(此时,该值小数点后的部分会被截断)

>>但是,内置函数int()不能将一个不合适格式的字符串转为int类型的值。

s1='65'
s = '1.0000'
print(int(s1))
print(int(s))

【Python】基础速通_第10张图片
>>产生“无效的int文字量”的ValueError(值错误)

>>3 输入

>>可以通过内置函数input()从键盘输入数据,

>>函数input()输入的永远是一个字符串

【Python】基础速通_第11张图片

总结

 
• 隐式类型转换:表达式中混合int、float类型的值时,Python会自动将int类型的值转为float类型的值。
• 显式类型转换:可以用内置函数str()将其他类型的值转为字符串str类型,也可以用内置函数int()或float()将其他类型的值转为int或float类型。
• 内置函数input()从键盘输入的永远是一个字符串str类型的值,需要用内置函数int()或float()转为数值类型才能参与算术计算。

四、运算符和表达式

1.应用方法

  • 运算符(operaors)   如:+,-,*,/,**(乘方, 比如2**2 即为 2的2次方)

        不同的运算符具有不同的优先级和结合性

  • 运算数:参与运算的数  

注意:不同类型的对象支持的运算符有所不同;注意是否合法 

+   对int 来说是加法    对字符串来说是拼接

a = 1
b = 2
print(type(a+b),a+b)  # int
a  = '1'
b = '2'
print(type(a+b),a+b)  # 字符串类型

print(type(a*6),a*6)  # a重复6遍

【Python】基础速通_第12张图片

2.运算符的分类

  1. 算术运算符

【Python】基础速通_第13张图片

2.比较运算符

【Python】基础速通_第14张图片

3.逻辑运算符

与或非  优先级:not>and>or 

  • and
  • or
  • not

4.位运算符

二元位运算符:位与,位或,异或

  • &
  • |
  • ^

一元位运算符:取反,左移,右移

  • ~
  • <<  各二进制位全部左移几位,高位丢弃,低位补零
  • >>  ......... 无符号数,高位补零

数字在计算机中是以补码保存的,所以Python位运算是作用在补码上

b = 3 # 0011
print(b<<2)  # 12

【Python】基础速通_第15张图片


计算机中正数和负数的存储形式:

(1)计算机中的正数用原码表示;

(2)计算机中的负数用补码(原码取反再加一)表示。

 左移右移:位运算符之左移和右移 - 知乎

计算机中数的存储形式:计算机中数的存储形式(原码,反码,补码的表示)_不吃猫的鱼c的博客-CSDN博客_数字在计算机中的存储形式


5.赋值运算符

  • 简单的赋值运算符 =  ,给1个对象起了一个名字
  • 简单赋值运算符和算术、位运算结合构成复合赋值运算符
  • 【Python】基础速通_第16张图片

x=2
x+=3  # x=x+3

变量x现在引用的是一个新的结果对象而不是原来的2,可以通过输出x的id来验证这一点

6.成员运算符: in、not in

>>用于判断一个值(对象)是否在一个容器对象,如 list、str、tuple 对象中,返回布尔类型。


7.身份运算符:is、is not

>>用于判断2个变量(标识符)是不是引用的同一个对象。例如:

a = 10
b = 10
print(id(a),'  ' ,id(b)) 
print(a is b)
print(a is not b)

【Python】基础速通_第17张图片

 上述代码a,b都为10,要是改成1000呢?

【Python】基础速通_第18张图片

可以看到,a和b 并不是引用的同一个对象了。

 why?

因为在执行时会将小整数驻留在内存中,将小整数赋值给多个变量,它们实际引用的是同一个对象。而将整数赋值给不同变量,这些变量将引用临时创建的不同对象。

3 运算符的优先级

>>运算符的优先级

  • 算术运算符总是“先乘除,后加减”,同样级别的运算符,如+和-则按照“自左往后的次序”计算

  • 同样是逻辑运算,not比and优先级高,而and比or优先级高。

下表从上到下优先级降低:

无需特地去记忆,因为可以通过加括号来使运算按自己想要的顺序来

【Python】基础速通_第19张图片


总结


• 表达式是用运算符对运算数进行运算的式子,运算数包括值或变量,变量实际就是值对象的引用。
• 常见的运算符按照其功能,主要包括算术运算符、逻辑运算符、比较运算符、位运算符。

还有一些其他的运算符,如比较运算符(in和not in)、身份运算符(is和is not)。
• 不同的运算符具有不同的优先级,优先级高的先运算。无须记忆运算符的优先级,因为可以用圆括号保证正确的运算顺序。

五、可变对象和不可变对象

  • 可变对象:  可变类型的对象的值是可以被修改的

        list类型、set类型、dict类型等都是可变类型

  • 不可变对象:不可变类型的对象的值是不可修改的

        数值类型、str类型、tuple类型都是不可变类型

1.假如我们对 不可变类型 tuple 元组进行修改会怎样?

【Python】基础速通_第20张图片

 可见:产生了类型错误“TypeError:'tuple'object does not support item assignment”


2.下列代码呢?

t = (1,2,3)
print(t)
t = (4,5,6)
print(t)

输出:

(1, 2, 3)
(4, 5, 6)

变量仅是对象的别名,而不是对象本身。当变量t引用不可修改的tuple对象(1,2,3)时,这个tuple对象不可修改,但可以对变量名t重新赋值,如“t=(4,5,6)”使变量t又引用了这个新的tuple对象。


3.如果1个变量指向的是1个可修改的对象,那么可以通过这个变量修改它指向的对象,而这个时候并不会创建新对象

假设有一个元组 (1,2,[520, 'ss'] ) 元组里有一个元素是列表类型

a = (1,2,[520, 'ss'] )
# a[1] = 20  报错
print("未修改前{}".format(a))
a[2][1] = 'sz'
print("修改后{}".format(a))
print(a[2])

输出:

  • 未修改前(1, 2, [520, 'ss'])
  • 修改后(1, 2, [520, 'sz'])
  • [520, 'sz']

总结


• 数据类型分为可变类型和不可变类型,可变类型的对象的值是可修改的,而不可变类型的对象的值是不可修改的。
• 无论变量指向的是一个可修改的对象,还是一个不可修改的对象,给这个变量赋值都会使这个变量引用其他的对象(如创建的新对象)。对变量指向的可变对象的值进行修改不会使变量引用新对象,只是修改变量引用的对象的值。

六、控制语句

1.if条件语句

           注意缩进:if语句体的多条语句必须具有一致的缩进

           否则报错:产生“缩进错误(IndentationError)

【Python】基础速通_第21张图片

if....else

    if...else..还有一种用法:A if B else C

    如果B成立就执行A,否则就执行C

if...elif...else

2.循环语句

1.while循环语句

例如,可以用while循环语句编写计算学生平均成绩:【Python】基础速通_第22张图片

 2.for循环语句

Python还有一个用于遍历访问一个容器(如str、list或tuple等容器)对象的每个元素的for...in循环

li = [1,2,3,2.14,'wos',True]
for each in li:
    print(each)

输出:

【Python】基础速通_第23张图片

 什么是可迭代对象?

它可以通过for循环迭代地访问其中的元素的一种对象,如list、tuple、set、dict和字符串str类型的对象都是可迭代对象

函数range():range(strat,stop[,step])

该函数返回一个可迭代对象,该对象包含了介于start和stop之间(但不包含stop)的一系列整数的可迭代对象

可以将函数range()产生的可迭代对象传递给内置函数list()或tuple()等构造一个list对象或tuple()对象。

【Python】基础速通_第24张图片

 3.break语句

在重复执行循环体时,如果满足某种条件,就可以用break语句跳出循环,即不再执行循环体。

4.continue语句

在执行循环体时,如果遇到continue语句,则会停止执行其后续语句,返回循环开头继续执行循环体

 5.else语句

循环语句(for或while)都可以在后面跟一个else语句,当for语句遍历完整个可迭代对象(如遍历完整个list的元素),或者当while语句的条件表达式是false退出时,都会执行这个else语句。但是,如果是通过break跳出循环语句则不会执行这个else语句

【Python】基础速通_第25张图片

【Python】基础速通_第26张图片

6. pass语句 

 pass是一个空语句,当需要有的地方需要一条语句,但是又不希望这条语句执行任何动作,这时就可以用pass语句,程序不会产生语法错误。或者,编写程序时还未想好写什么代码,可以用一个pass语句作为“占位符”


 总结


• if条件语句:if、if...else、if...elif...else等多个用法。
• while循环语句是当条件表达式为True时,会一直执行循环体中的程序块。

•循环for语句是迭代访问一个可迭代对象的所有元素。
• break语句用于跳出循环。continue语句用于终止循环体中后续的语句执行,重新开始下一轮循环。除非用break语句跳出循环,否则循环结束总会执行else语句。
• 空语句pass用于语法上需要语句而实际不需要做任何工作的地方,或者用作占位符,以等待后续补充代码。

你可能感兴趣的:(Python,python)