文章目录
1. 字符串格式化输出
age=24
print('age=%d' % age)
print('age={}'.format(age))
print(f'age={age}')
对于输入函数input
,需要注意的是返回的是str类型对象。
2. 转义字符和原始字符
+字符,转义字符:\r、\n、\、\a…
r+字符,原始字符:print(r'D:\note')
,含义就是让\n不再是转义字符换行的效果,就是字符’\n’
3. python中没有++
操作
同样没有--
操作
字符串后没有隐含的\0
4. 动态强类型
Python是一种 动态强类型 编程语言.
动态是指运行时进行变量类型检查; 强类型 指类型检查严格, 并且"偏向于"不允许隐式转换.
列表、字典的值可变,其它int、float、tuple、str等均不可以改变。
a=[10,'abc',[1,2,3],{'name':'zhangwei','age':20}]
'''变量a指向的对象是一个拥有4个元素的列表'''
a[3]['age']=18
print(a)
[10, 'abc', [1, 2, 3], {'name': 'zhangwei', 'age': 18}]
5. + 用于字符串连接运算, * 用于字符重复
a,b='abc','ABC'
print(a+b)
print(a*3)
abcABC
abcabcabc
6.引用和对象
在python中一切皆对象,函数、模块、文件等都是对象。
你是否听过Key_Value结构?python对象特性:KTV
K 对象标识,可通过内建函数id()
取获取某个对象在内存中的唯一标识。
T 对象类型,可通过内建函数type()
获取对象的类型。
V 表示对象中具体保存的内容. 有些对象的值可以修改, 有些对象的值不能修改, 这个称为对象的 “可变性”。
而变量类似于给对象贴标签,标签指向的对象是可以改变的。
a,b='str','c'
a=a+b
print(a)
strc
str对象不可以改变,上述一共产生了3个str对象,标签a开始时候执行str
对象,之后标签a指向strc
,像a这种标签就是python中的引用。
7.列表解析
a=[x**2 for x in range(10)]
print(a)
b=[x*2 for x in a if x%2==1]
print(b)
8.作用域和生命周期
Python中, def、class、lamda 会改变变量的作用域,if、else、 elif、 while,、for、 try/except不会改变变量的作用域。
在C语言中,如果是{}内的变量,作用域仅限于{}内,而python不是这样的。
for i in range(10):
pass
print(i)
也就是说上述代码是合法的。
内建函数globals()返回了全局作用域下都有哪些变量, 内建函数locals()返回了局部作用域下都有哪些变量。
9.多元赋值
x, y = 1, 2
等价于x=1,y=2
在C语言中,要交换两个同类型变量的值,需要创建第三个同类型变量。醋壶装醋,油壶装油,要想让醋壶装油,油壶装醋,我们需要第三个空壶来周转。可是python不需要这样,python实现如下:
a,b=10,20
a,b=b,a
print(a,b,sep='\n')
sep是print的一个参数,表示打印元素的分隔符,默认为一个空格。
10.重新认识运算符号/
在C语言中,当需要做除法时候,我们会使用/
。如果除数和被除数都是int类型,那么结果只能保留整数位,相当于C语言在做完除法之后,还隐式转换了结果的类型。
而在python中,/
就仅仅是除法,结果是多少就是多少。如果想要C语言那种除法结果不保留小数位,那么就有了//
。同时python还提供了可以得到商和余数一组结果的方法:divmod
。