文章目录

  • 一、基础简介
  • 1、Python简介
  • 2、执行过程
  • 二、变量
  • 三、数据类型
  • 1、数字
  • 2、字符串
  • 3、布尔bool
  • 4、空值对象None
  • 5、列表
  • 6、字典
  • 7、数据类型转换
  • 重点
  • 四、格式化输出
  • 五、算术运算符
  • 1、算术运算
  • 2、比较运算
  • 3、赋值运算
  • 4、逻辑运算
  • 5、身份运算
  • 6、优先级



一、基础简介

1、Python简介

Python定义:是一个免费、开源、跨平台、动态、面向对象的编程语言。

Python程序的执行(运行)方式有两种:交互式、文件式

交互式
在命令行输入指令,回车即可得到结果。
1.打开终端
2.进行交互式:python3
3.编写代码:print(“hello world”)
4.离开交互式:exti()

文件式
将指令编写到.py文件,可以重复运行程序。
1.编写文件(后缀.py不能省略)
2.打开终端
3.进入程序所在目录:输入“cd” 进入到某个目录
4.执行程序:python3文件名(刚才编写的文件名称+.py)

2、执行过程

python基础教程模块 python基础教程简介_数据


计算机只能认识机器码(1010),不能识别源代码(python)。

1.由源代码转变成机器码的过程分成两类:编译和解释。

2.编译:在程序运行之前,通过编译器讲源代码变成机器码,例如:C语言

优点:运行速度快

缺点:开发效率低,不能跨平台。

python基础教程模块 python基础教程简介_python_02


3.解释:在程序运行之时,通过解释器对程序逐行翻译,例如:Javascript

优点:开发效率高,可以跨平台

缺点:运行速度慢

python基础教程模块 python基础教程简介_字符串_03


4.python是解释型语言,但为了提高运行速度,使用了一种编译的方法。编译以后得到pyc文件,存储了字节码(特定于Python的表现形式,不是机器码)。

源代码—编译–>字节码–解释–>机器码

源代码到字节码的编译过程只在第一次执行

python基础教程模块 python基础教程简介_变量名_04


二、变量

1.定义:关联一个对象的标识符。

2.命名:必须是字母或下划线开头,后跟字母、数字、下划线。

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 关键字不能声明为变量名[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

不能使用关键字(关键字会显示蓝色),否则发生语法错误:SyntaxError: invalid syntax。

建议命名:

  • 驼峰体
    AgeOfOldboy = 56
    NumberOfStudents = 80
  • 下划线(推荐使用)
    age_of_oldboy = 56
    number_of_students = 80
    不建议拼音命名

3.赋值:创建一个变量或改变一个变量绑定的数据。

4.语法:

  • 变量名 = 数据
  • 变量名1 = 变量名2 = 数据
  • 变量名1, 变量名2 = 数据1, 数据2

5.常量
常量即指不变的量,如pai 3.141592653…, 或在程序运行过程中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_OLDBOY = 56

ps:在c语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错


三、数据类型

1、数字

整形int

表示整数,包含正数、负数、0。如: -5, 100, 0

字面值:

十进制:5

二进制:0b开头,后跟0或者1

二进制(0 1 10 11 100 101 …)
num02 = 0b11
print(num02)
#num02=3

八进制:0o开头,后跟0,1,2,3,4,5,6,7,

八进制(0 1 … 7 10…)
num03 = 0o10
print(num03)
#num03=8

十六进制:0x开头,后跟0,1,2,3,4,5,6,7,8,9,a(10),b(11),c(12),d(13),e(14),f(15)

十六进制(0 1 …9 a(10) – f(15) 10(16))
num04 = 0xa
print(num04)
#num04=10

小整数对象池:CPython 中整数 -5 至 256,永远存在小整数对象池中,不会被释放并可重复使用。

浮点型float
表示小数,包含正数、负数,0.0。

字面值:

小数:1.0 2.5

科学计数法:e/E (正负号) 指数

例如:

1.23e-2 (等同于0.0123)

1.23456e5(等同于123456.0)

1.0000002科学计数法表达(1+0.2e-6)

f01 = 0.0
f02 = 0.2e2
print(f02)
#f02=20.0
print(type(f01))
#<class ‘float’>

其他数据类型(了解)
int(整型)

在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807

long(长整型)

跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int

>>> a= 2**64
>>> type(a)  #type()是查看数据类型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>

complex复数型

>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0

2、字符串

是用来记录文本信息(文字信息)。

字面值:双引号(也可以用单引号 但不建议用)

在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name=‘egon’ #name=str(‘egon’)
用于标识:描述性的内容,如姓名,性别,国籍,种族

单引号、双引号、三引号的区别

#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = “My name is Egon , I’m 18 years old!”
多引号什么作用呢?作用就是多行字符串必须用多引号
msg = ‘’’
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
‘’’
print(msg)

字符串拼接(只能在字符串之间进行,且只能相加或相乘)

#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。

name=‘egon’
age=‘18’
name+age #相加其实就是简单拼接
‘egon18’

name*5
‘egonegonegonegonegon’

注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

注意2:只能字符串加字符串,不能字符串加其他类型

3、布尔bool

用来表示真和假的类型

True 表示真(条件满足或成立),本质是1

False 表示假(条件不满足或不成立),本质是0

从语义上讲 没有数据为False

b01 = True # 真 对
b02 = False # 假 错
print(b01) #b01=True
print(type(b01)) # <class ‘bool’>

4、空值对象None

表示不存在的特殊对象。

作用:

1.用来占位(创建变量name01,但暂时“不存储数据”。)

创建变量name01,但暂时"不存储数据".
name01 = None
name01 = “张三”
print(name01) #张三

2.变量解除绑定()

name02 = “张三”
name02 = None
print(name02) #None

!!!所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真

5、列表

在[]内用逗号分隔,可以存放n个任意类型的值

定义:students=[‘egon’,‘alex’,‘wupeiqi’,] #students=list([‘egon’,‘alex’,‘wupeiqi’,])

用于标识:存储多个值的情况,比如一个人有多个爱好

列表嵌套:

#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好
'play'

6、字典

为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下

info=[‘egon’,‘male’,18]

定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用

info[2]
#18

但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:

#name, sex, age
info=[‘egon’,‘male’,18]

而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典

在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={‘name’:‘egon’,‘age’:18,‘sex’:18} #info=dict({‘name’:‘egon’,‘age’:18,‘sex’:18})

用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值

字典相关的嵌套

info={
    'name':'egon',
    'hobbies':['play','sleep'],
    'company_info':{
        'name':'Oldboy',
        'type':'education',
        'emp_num':40,
    }
}
print(info['company_info']['name']) #取公司名


students=[
    {'name':'alex','age':38,'hobbies':['play','sleep']},
    {'name':'egon','age':18,'hobbies':['read','sleep']},
    {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
]
print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好

7、数据类型转换

转换为整形: int(数据)

转换为浮点型:float(数据)

转换为字符串:str(数据)

转换为布尔:bool(数据)

结果为False:bool(0) bool(0.0) bool(None)

混合类型自动升级:

1 + 2.14 返回的结果是 3.14

1 + 3.0 返回结果是: 4.0

在python中变量没有类型,但关联的对象有类型。

通过type函数可查看。

可以通过tpye()查询数据类型

例如:

>>>type(1)
<type 'int'>         #整型

>>>type('iplaypython')
<type 'str'>         #字符串

重点

1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

# %s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('egon',18))
# %d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('egon',18))
print('My name is %s,my age is %d' %('egon','18')) #报错

# 接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错

四、格式化输出

程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

比如要求用户输入用户名和年龄,然后打印如下格式:

My name is xxx,my age is xxx.

很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

这就用到了占位符,如:%s、%d

五、算术运算符

计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

1、算术运算

以下假设变量:a=10,b=20

python基础教程模块 python基础教程简介_python_05

2、比较运算

以下假设变量:a=10,b=20

python基础教程模块 python基础教程简介_python基础教程模块_06

3、赋值运算

以下假设变量:a=10,b=20

python基础教程模块 python基础教程简介_python基础教程模块_07

4、逻辑运算

python基础教程模块 python基础教程简介_数据_08


1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。

>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False

2、最好使用括号来区别优先级,其实意义与上面的一样

'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
'''
>>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
False

3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回

>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路:       0      ''            'abc'                    
            假     假              真

返回:                            'abc'

4、短路运算面试题:

>>> 1 or 3
1
>>> 1 and 3
3
>>> 0 and 2 and 1
0
>>> 0 and 2 or 1
1
>>> 0 and 2 or 1 or 4
1
>>> 0 or False and 1
False

5、身份运算

is比较的是id
而==比较的是值

6、优先级

高到低:算数运算符,比较运算符,快捷运算符,身份运算符,逻辑运算符