说明
- Life is short ,you need Python 人生苦短,我用Python
- 使用的IDE是Pycharm
- Python中万物皆对象
一、基本知识
1. 注释
comment
被注释的内容不是真正的执行程序代码,起辅助说明作用等
1.1 单行注释
启用或取消单行注释快捷键:Ctrl+/
第一种格式
# 打印hello world
print("hello world")
第二种格式
print("hello world") # 打印hello world
1.2 多行注释
无快捷键
第一种格式:双引号组成
"""
测试程序
打印hello world
"""
print("hello world")
第二种格式:单引号组成
'''
测试程序
打印hello world
'''
print("hello world")
2. 变量
2.1 变量的定义
程序是处理数据的,而变量是存储数据的
- 优点
- 提高人效
- 提高开发效率
- 符合敏捷开发
- 利于测试自动化
2.2 变量的类型
变量类型 | 说明 |
---|---|
数字 |
int 有符号整数long 长整型 float 浮点数complex 复数 |
布尔类型 bool |
True False
|
字符串 stri | 有序的字符序列'xxx' 或"xxx"
|
元组 tuple | (x, x, ...) |
列表 list | [x, x, ...] |
字典 dict | {x: y, x: y, ...} |
Python中系统会自动辨别变量的类型,不需要去主动说明变量的类型
可以用type查看变量类型
格式:
print(type(var_name))
eg:
print(type("Hello World"))
<class 'str'>
3. 标识符
3.1 组成规则
- 自定义
- 由字母、下划线和数字组成,不能以数字开头,包括变量名、函数名、类名、模块名等
- Python中标识符是区分大小写的
3.2 命名规则
命名规则 | 说明 |
---|---|
见名知意 | |
驼峰命名法 | 小驼峰命名法(一般用于方法名): 第一个单词以小写字母开始,其余的单词首字母都大写 eg: userName 大驼峰命名法(一般用于类名): 每一个单词的首字母都大写 eg: UserName
|
_ 下划线连接单词 |
eg:user_anme
|
3.3 关键字
具有特殊功能的标识符
- 查看关键字
import keyword
# 查看该Python版本的关键字
print(keyword.kwlist)
4. 输出
4.1 普通输出
eg:
print()
print(变量名1, 变量名2)
4.2 格式化输出
eg:
age = 19
print("小明的年龄是%d" % age)
name = "小明"
age = 19
print("%s的年龄是%d" % (name, age))
4.3 常用的格式符号
格式符号 | 转换 |
---|---|
%c |
字符 |
%s |
字符串、布尔类型(True/False) |
%[[-]n]d |
有符号十进制整数、布尔类型(1/0)%nd 占用n位的位置,默认右对齐%-nd 占用n位的位置,默认左对齐 |
%u |
无符号十进制整数 |
%o |
八进制数 |
%x |
十六进制整数(小写字母0x) |
%X |
十六进制整数(大写字母0X) |
%f 或%.nf
|
浮点数(默认保留小数点六位或保留小数点n位) |
%e |
科学计数法(小写e) |
%E |
科学计数法(大写E) |
%g |
%f和%e的简写 |
%G |
%f和%E的简写 |
4.4 换行输出
换行符:\n
eg:
print("Hello\nWorld")
Hello
World
- 转义字符(
\
和%
)
print("Hello\\nWorld")
Hello\nWorld
-
num = 98
print("%d%%" % num)
98%
5. 输入
5.1 python2.x
input()
返回的是用户输入数据对应类型的数据
row_input()
返回的是字符串类型的数据
5.2 python3.x
input()
返回的是字符串类型的数据
eg:
my_name = input("请输入你的名字:")
print(my_name)
请输入你的名字:hah
hah
6. 运算符
6.1 算术运算符
算术运算符 | 描述 | 示例 | 优先级 |
---|---|---|---|
+ |
加 | 3+2 |
3 |
- |
减 | 3-2 |
3 |
* |
乘 | 3*2 |
2 |
/ |
除 | 3/2 |
2 |
// |
取整数 | 3//2 |
2 |
% |
取余数 | 3%2 |
2 |
** |
指数 | 2**3 |
1 |
- 数字越小,优先级越高
- 为避免歧义,最好使用()来处理运算符的优先级
- 不同类型的数字进行混合运算,整数会转换为浮点数进行运算
6.2 赋值运算符
赋值运算符 | 描述 | 示例 |
---|---|---|
= |
赋值运算符 | num = 10 |
复合赋值运算符 | 描述 | 示例 |
+= |
加法赋值运算符 | |
-= |
减法赋值运算符 | |
*= |
乘法赋值运算符 | |
/= |
除法赋值运算符 | |
%= |
取模赋值运算符 | |
//= |
取整数赋值运算符 | |
**= |
幂赋值运算符 |
6.3 关系运算符
又称比较运算符
关系运算符 | 描述 |
---|---|
== |
检查两个操作数是否相等,是则条件为真 |
!= |
检查两个操作数是否不相等,是则条件为真 |
> |
检查左操作数是否大于右操作数,是则条件为真 |
< |
检查左操作数是否小于右操作数,是则条件为真 |
>= |
检查左操作数是否大于等于右操作数,是则条件为真 |
<= |
检查左操作数是否小于等于右操作数,是则条件为真 |
6.4 逻辑运算符
逻辑运算符 | 逻辑表达式 | 描述 |
---|---|---|
and |
x and y |
与 |
or |
x or y |
或 |
not |
not x |
非 |
6.5 身份运算符
用于比较两个对象的内存地址是否一致即是否是对同一个对象的引用
身份运算符 | 描述 | 示例 |
---|---|---|
is |
判断两个标识符是不是引用同一个对象 |
x is y id(x) == id(y)
|
is not |
判断两个标识符是不是引用不同的对象 |
x is not y id(x) != id(y)
|
- Python中与None作比较常用
is
7. 数据类型转换
常见的数据类型转换 | 说明 |
---|---|
int(x[,base]) |
将x转换为一个整数 |
float(x) |
将x转换为一个浮点数 |
complex(real[,imag] ) |
创建一个复数,real为实部,imag为虚部 |
str(x) |
将对象x转换为字符串 |
repr(x) |
将对象x转换为表达字符串 |
eval(x) |
内建函数 用来计算在字符串中的有效Python表达式并返回一个对象 |
tuple(s) |
将序列s转换为一个元组 |
list(s) |
将序列s转换为一个列表 |
chr(x) |
将一个整数转换为Unicode字符 |
ord(x) |
将一个字符转换为它的ASCII整数值 |
hex(x) |
将一个整数转换为一个十六进制的字符串 |
oct(x) |
将一个整数转换为一个八进制的字符串 |
bin(x) |
将一个整数转换为一个二进制的字符串 |
字符串中的有效Python表达式的说明:
"3.14"取掉""后得到3.14是一个有效的数据类型,则它是有效的
"3..14"取掉""后得到3..14不是一个有效的数据类型,则它是无效的eval()
和input()
可以配合使用,但不要滥用
eg:
num = eval(input("请输入一个数字:"))
print(num)
print(type(num))
注意:
- 在开发时,千万不要直接使用
eval()
转换input()
的结果
上述代码输入__import__('os').system('ls')
时也会执行,假如ls
换成rm *
,会直接删除所有文件,即通过__import__('os').system()
可以执行所有终端命令
更新中......