Python是用什么语言实现的?
C、Java
对应的有两种解释器:
1、CPython,应用更广泛
2、Jpython,相当于是把Python代码编译成Java字节码运行在JVM上。 优点:执行效率更高 缺点:编译需要花时间
怎么执行源文件?
py
py hello.py
python hello.py
本质都是D:/Python/python.exe d:/Pytest/hello.py
注释
单行注释
# print("aaa")
规范
1、#与被注释内容之间存在一个空格。
2、#与语句末尾之间存在两个空格。
多行注释
python
"""
这是多行注释
"""
'''
这也是多行注释
'''
python的版本
版本 | Python2 | Python3 |
---|---|---|
输入方式 | raw_input() | input() |
输出方式 | print "hello" | print("hello") |
编码格式 | 默认ASCII | 默认utf-8 |
字符串格式化 | 百分号% "hello,%s" %("world") | format()函数 "hello,{}".format("world") |
Python3是没法向下兼容的。并且Python2已经停止维护了。
用什么版本呢?通常不建议用最新的版本,建议用前1-2个版本,会更稳定。
变量
是什么?
临时存储数据的容器。 为什么说是临时存储呢?因为当程序运行时,数据会被加载进变量的内存空间,而运行结束后,内存空间中的数据就被释放了。
是变化的量。也就是说在程序运行的过程中,变量的值可以被修改。
变量是怎么定义的?
变量名 = 变量值
例:a = 1
规范
1、必须先定义,再使用。
2、变量的赋值。
1)定义的时候必须赋初始值。
2)给多个变量赋相同值。
a = b = 1
3)给多个变量赋不同值。
a, b = 1, 2
3、变量的命名:
1)不能和标识符 关键字重名。
2)由字母 数字 下划线组成。不能有其他的字符。不能以数字开头
3)最好不要包含中文。
原因:
a.控制台或日志中的编码不兼容,还是会出现乱码的情况
b、关键字还是英文的,切换输入法太麻烦
4)下划线命名法与驼峰命名法
下划线命名法:
1、字母全部小写
2、单词之间用下划线分隔 例子:user_name
驼峰命名法: 两个单词的首字母大写。
5)Python中变量名对大小写敏感。Agent和agent是两个变量。
关键字与标识符
什么是关键字?
系统定义好的 有功能或含义的 字符。
什么是标识符?
程序员定义的 有功能或含义的 字符。
如此说来:变量名 函数名 类名 文件名 都属于标识符。
数据类型(常用的三大类)
基本数据类型
数值型
整型int
浮点型float
布尔型
bool
值:True、False
True转为整数是1,False转为整数是0。
容器类型
字符串str
不可变数据类型。
特点:用单引号/双引号包裹。
长度:len(str1)
py
print(len('H')) # 1
print(len('1')) # 1
print(len('_')) # 1
print(len(' ')) # 1
print(len('\t')) # 1
我们发现,单个字母、数字、符号、空格 以及完整的转义字符的长度都为1。
用索引可以获取字符串中的单个字符。
py
print("Hello"[1]) # e
怎么获取字符串中的最后一个字符?
py
str = "hello"
print(str[len(str)-1]) # h
print(str[-1]) # h
列表list
可变数据类型
常用方法
append添加
pop删除/弹出
元组tuple
不可变数据类型
字典dict
dictionary的缩写。 可变数据类型
集合set
可变数据类型
空值类型NoneType
值为None
None是什么?
不是0,不是False,不是空字符串。 表示完全没有值。
什么时候用?
当我需要一个变量,但是暂时不知道它的值是什么。 此时就可以先赋值为None。
怎么判断一个变量的数据类型?
py
a = "hello"
b = 5
c = 5.0
d = True
e = None
print(type(a)) # str
print(type(b)) # int
print(type(c)) # float
print(type(d)) # bool
print(type(e)) # NoneType
对比:Java有哪些数据类型?
基本数据类型
数值型
整型:byte、short、int、long 它们有什么区别?占用的内存空间大小不同。
数据类型 | byte | short | int | long |
---|---|---|---|---|
内存空间 | 1字节 | 2字节 | 4字节 | 8字节 |
浮点型:float、double
布尔型boolean
true flase 1字节
和python区别:python的是大写开头
字符型char
1字节
引用类型
对象object
接口interface
数组array
Python和Java关于变量数据类型的不同点
在Python中,变量的数据类型可以随意改变。 在Java中,变量的数据类型在定义的时候就已经确定了,无法改变。 Python是动态数据类型,Java是静态数据类型。
数据类型转换
数值类型的精度
精度从低到高排列:int、float
高精度转低精度会丢失精度。 人话:浮点数转整数,会进行向下取整,去除小数部分,保留整数部分。
int与float之间的转换
py
a = 1
b = float(a)
print(b) # 1.0
c = 1.5
d = int(c)
print(d) # 1
数值型与str之间的转换
1、数值型可以直接转str型。
py
a = 1
b = str(a)
print(b) # 1
print(type(b)) # <class 'str'>
c = 1.5
d = str(c)
print(d) # 1.5
print(type(d)) # <class 'str'>
2、str型转数值型。如果转float,那么引号包裹的可以是小数或整数。如果转int,那么引号包裹的只能是整数。
py
str1 = '1'
a = float(str1)
print(a) # 1
print(type(a)) # <class 'float'>
b = int(str1)
print(b) # 1
print(type(b)) # <class 'int'>
str2 = '1.5'
c = float(str2)
print(c) # 1.5
print(type(c)) # <class 'float'>
d = int(str2) # 报错:ValueError: invalid literal for int() with base 10: '1.5'
常用的数据类型转换
py
# 转整数
a = '3'
b = 2.5
c = int(a)
print(c) # 3
print(type(c)) # <class 'int'>
d = int(b)
print(d) # 2
print(type(d)) # <class 'int'>
# 转浮点数
e = 1
f = '6.6'
g = float(e)
print(g) # 1.0
print(type(g)) # <class 'float'>
h = float(f)
print(h) # 6.6
print(type(h)) # <class 'float'>
# 转字符串
# 计算在字符串中的有效python表达式,并返回一个对象
# 转元组
# 转列表
输入输出
输入
input("请输入内容:")
1、input函数让进程进入阻塞状态,等待用户输入。输入后按Enter键结束输入,程序继续执行。
2、需要定义变量接收输入内容。
name = input("请输入你的姓名:")
3、输入内容会被转换为字符串类型。
py
age = input("请输入您的年龄:")
print(type(age)) # <class 'str'>
格式化输出
什么意思?
按照指定的格式输出内容。
比如以字符串的格式输出;以有符号的十进制整数的格式输出;以浮点数的格式输出
py
age = 16
print('小王今年 %d 岁' % age)
# 本质上是
str = '小王今年 %d 岁' % age
print(str)
格式化输出 = 格式化 + 输出。也就是说输出前就已经格式化完了。 即:格式化是字符串的功能,print()函数只是把内容输出到控制台里。
格式化输出的三种方式
占位符
先上一个例子:
py
brand_name = 'BMW'
price = 220000.2323
number = 3
print('brand_name is %s' % brand_name)
print('brand_name is %s, price is %.2f, number is %05d' % (brand_name, price, number))
规则:
1)不同数据类型的变量要用不同的占位符进行占位。
2)如果有多个占位符,后面对应的变量要用括号括起来。变量数要与占位符数量一致。
3)格式化完成后,会在占位符位置上填充上对应的变量。
4)浮点数精度处理: 取小数点后N位,%.Nf
5)整数处理: 如果不足则在前面补N个0,%Nd
f-string
这个方式是python3.6中新增的
py
user_name = "zoo"
str1 = f'name = {user_name}'
print(str1)
salary = 20000.688
print(f'小王上个月的薪资为{salary:.1f}')
stu_no = 2
print(f'小王的工号是{stu_no:06d}')
解释:.1f意思是保留小数点后1位。 06d的意思是,总共有6位数,如果不足6位就用0填充
format方法
py
year = 2002
age = 18
str1 = "今年是{0}年,小李{1}岁".format(year, age)
print(str)