2 变量和简单类型
Python 是一门弱类型语言,弱类型包含两方面的含义:
- 所有变量无需声明即可使用,或者对没有用过的变量赋值就是声明了该变量。
- 变量的数据类型可以随时改变,同一个变量可以一会儿是数值型,一会儿说字符型
2.1 注释
- 给人看
- 控制范围修bug
2.2 变量
print() 函数默认以空格隔开多个变量(空格是默认分隔符), 想要改变默认分隔符,可通过sep参数进行设置
例如:
first_name = 'AAA'
last_name = 'BBB'
print('fullname =', first_name, last_name, sep='#')
# print outcome: fullname =#AAA#BBB
一般情况下 print()函数输出之后总会换行,这是因为print()函数的end参数默认值是
‘\n’ 不换行只要修改参数就好
num_1 = 30
num_2 = 40
num_3 = 50
print(num_1, '\t', end='@')
print(num_2, '\t', end='')
print(num_3, '\t')
#print outcome: 30 @40 50(下一个命令行不在后面而是换行了)
file参数指定print()函数的输出目标,file参数的默认值为sys.stdout, 该默认值代表了标准输出,也就是屏幕,因此print()函数默认输出到屏幕上。实际上可以改变参数改变输出位置
f = open('test1.txt', 'w')
print('Hello World!', file=f)
print('欢迎加入python大家庭', file=f)
f.close()
print()函数的flush参数用于控制输出和缓存,一般保持为False 来保持高性能
2.3 数值类型
2.3.1 整型
python没有long, short, int
a = 114514114514114514
print(type(a))
对于这段代码,3.x的答案是 int 2.x的答案是long
python的整形数值有四种表示形式
- 十进制
- 二进制 0b 或 0B开头
- 八进制形式 0o 或 0O开头的整数
- 十六进制形式 0x或0X的整数
python3 不支持八进制 但是支持 数值划线
my_price = 114_514
print(my_price)
#print outcome: 114514
2.3.2 浮点型
- 十进制形式: 浮点数必须包含一个小数点 否则会被当成整数处理
- 科学计数形式: 5.12E2也是浮点数 python认为它是512.0
2.4.3 rear 和字符串
age = 20
print('I am' + age + 'years old')
# 报错:TypeError: can only concatenate str (not "int") to str
这里用str()或者repr() 都行
2.4.4 使用input 和 raw_input获取用户输入信息
raw_input()函数是python2的
input()是python3的
无论输入那种内容,input()函数始终返回字符串
目前觉得没什么用的长字符串和原始字符串还有bytes
2.5.2 字符串格式化
age = 20
print('I am %s years old' % age)
2.5.3 序列相关方法
2.5.4大小写相关方法
python 字符串由内建的str类代表
dir(): 列出指定类或模块包含的全部内容(包括函数、方法、类、变量)
help(): 查看某个函数或方法的帮助文档
str类中与大小写相关的常用方法如下:
title(): 将每个单词的首字母改为大写
lower(): 将整个字符串改为小写
upper(): 将整个字符串改为大写
str1 = 'I am Your brother!'
print(str1.title())
print(str1.lower())
print(str1.upper())
'''
print outcome:
I Am Your Brother!
i am your brother!
I AM YOUR BROTHER!
'''
2.5.5 删除空白
- strip():删除字符串前后的空白
- lstrip():删除字符串(左边)的空白
- rstrip():删除字符串(右边)的空白
默认值是空白,还可以传参数
查找、替换相关方法
- startswith():是否以指定子串开头
- endswith():是否以指定子串结尾
- find(): 查找指定子串在字符串中出现的位置,如果没有找到指定子串,返回-1
- index():查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError 错误
- replace(): 使用指定子串替换字符串中的目标子串。
- translate():使用指定的翻译映射表对字符串执行替换
s = 'crazyit.org is a good site'
print(s.startswith('crazyit'))
print(s.endswith('site'))
print(s.find('org'))
print(s.find('org', 9))
print(s.index('org', 8))
print(s.replace('it', 'xxx'))
print(s.replace('it', 'xxx', 1))
'''
True
True
8
-1
8
crazyxxx.org is a good sxxxe
crazyxxx.org is a good site
'''
翻译映射表我现在这个懒狗真的懒得学,回头说(等等
2.5.7 分割、连接方法
split()按指定分隔符分隔成多个关于
join()连接成字符串
2.6 运算符
- python支持连续赋值
a=b=c=20
- == 只比较两个变量的值,但is要求两个变量引用同一个对象
python 用id()找到变量引用的内存地址 如果所在地址相同则是同一个对象
python的三目运算符为什么看着这么笨比?
a = 3
b = 4
print('a大于b') if a > b else print('a不大于b')
# 人家JS a > b? print('a大于b'):print('a不大于b')
in 运算符
用来判断某个成员是否位于序列中,python中str就是一个序列
python之中的运算符是有优先级的
但是要注意:
- 不要把一个表达式写的过于复杂,如果一个表达式过于复杂,可读性差,请分成几步完成
- 不要过度地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应该尽量使用“()” 来控制表达式的执行顺序