1、基本类型与类型显示
(1)基本类型
print(type(1234)) #<class 'int'>,类型为整形
print(type(1234.32)) #<class 'float'>,类型为浮点类型
print(type(1234.)) #<class 'float'>
print(type('abc')) #<class 'str'>
type(object)函数是用来显示object的类型的
(2)集合
print(type([1,2,3,‘a',’b'])) #<class 'list'>,列表类型
print(type((1,‘abc'))) #<class 'tuple'>,元组类型
print(type(set([1,2,3,‘a',’b']))) #<class 'set'>,集合类型
print(type({'a':1,’b':2 })) #<class 'dict'>,词典类型
(3)函数
def func(a,b,c)
print(a,b,c)
print(type (func)) #<class 'function'>
函数也是有类型的,那就是function类型的,并且函数的对象也是这个类型:
a = func #紧跟着上面内容的
print(type (a)) #<class 'function'>
(4)模块
import string
print(type(string)) #<class ’module‘>
(5)类的类型
class MyClass(object):
pass
print(type(MyClass)) #<class ’type‘>
my_class = MyClass()
print(type(my_class)) #<class ’_main_.MyClass‘>
在Python中,所有对象都是一个类,所有类型也都是一个类,连自己定义的类都是一个类型
2、变量与类型
(1)变量定义:
- 变量存储在内存中的地址。这就意味着在创建变量时会在内存中开辟一个空间。
比如,x=100,这句命令执行的时候,会在堆(内存)中创造一个int空间(4个字节),然后在这个空间中存储100,而x则 是指向100的内存地址
堆与栈的区别?
堆——公共内存空间,谁分配谁回收
栈——函数自带堆栈,C语言中,函数自带1M堆栈,函数中调用参数会自动压入栈中,当调用完,所有参数都会被弹出栈,这样所有的内容都会被清理完毕
相对来说,堆就不会被清理,不管你函数有没有结束,堆相当于全局变量,每分配一个变量,都会在内存中存一条记录。
- 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
- 变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。(弱类型)
(2)变量赋值
- 每个变量在使用前都必须赋值(Python中赋值就是声明和创建变量的过程),变量赋值以后,该变量才会被创建。(重要!!!)
- 等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
3、常见字符串处理
- 去除空格及特殊符号:
s = ' abcd efg '
print(s.strip()) #去除左右空格,输出:abcd efg,注意字符串内部的空格无法去除
print(s.lstrip()) #去除左空格,右边无法去除
print(s.rstrip()) #去除右空格
print(s)
- 复制字符串:str1 = str2
- 修改字符串里面的值:可以参考博客——字符串修改
- 连接字符串
str2 += str1
new_str = str2 + str1
注意,当不包含字符串str2的时候,会报错,一般要进行设置捕获异常。
- 比较字符串:cmp(str1, str2)——Python3中,该函数被移除,而是用等于,不等于,大于小于,直接进行比较
- 字符串长度:len(str)————空字符串长度为0
空字符串与none是不一样的,none是彻底空的,连对象都没有,而空字符串虽然是空的,但是依然创建了对象:
s = ' '
if s is None:
print("None") ——————这个if语句没有显示,说明' '和none是两回事
但是空字符串与false是等价的:
s = ' '
if not s:
print("None") ——————这个if语句会输出None
- 大小写转换
s = 'abc defg'
print(s.upper()) #将字符串转换成大写字母
print(s.upper().lower()) #将大写字符串转换成小写形式
print(s.capitalize()) #将字符串首字母大写
- 分割与合并字符串:split, splitlines, join
s = 'abc,def,ghi'
print(s.split(',')) #将字符串以,逗号为分界线分开,和java函数是一样的,分开以后会转换成数组【,,】
s = '123\n456\n789' #这是三行字符串
numbers = s.splitlines() #按行切割字符串,适用于文本字符串,同样是转换成数组
print(numbers)
print('-'.join(numbers)) #将上面转换成的数组,以-联合起来
s = [ 'abc','def','ghi']
print(''.join(s))
print('-'.join(s))
print('\n'.join(s))
- 截取字符串固定位置的字符
str = "你好啊,朋友!"
pos = str.find("朋") #确定位置
print(pos) #显示pos是一个数字4
str1= str[:pos] #截取朋字前面的字符
print("显示str1:"+str1)
str1= str[pos:] #截取朋字后面的字符
print("显示str1:"+str1)
- 类型转换:int, float转换
- 格式化字符串
- 字符串测试
- str.startwith(prefix) ——判断开头是否含有prefix
- str.endwith(suffix)——判断结尾是否含有suffix
- str.isalnum() # 是否全是字母和数字,并至少有一个字符。
- str.isalpha() # 是否全是字母,并至少有一个字符。
- str.isdigit() # 是否全是数字,并至少有一个字符。
- str.isspace() # 是否全是空白字符,并至少有一个字符。
- str.islower() # 字母是否全是小写
- str.isupper() # 字母是否全是大写
- str.istitle() # 首字母是否大写
从数字到字符串的变化:
- print (str(5))
- print (str(5.))
- print (str(5.2354))
- print (str(-5.234))
从字符串到数字的变化:
- print (int('1243'))
- print (int('3.455'))——这里会报错,因为它不会自动进行转换
- print (float(‘23424.23’))
进制变换:
print (int('7777',8))——会输出4095,这里后面的8表示‘7777’是8进制数,然后转换成十进制
字符串与list数组的转化:
s = 'abcdefg'
l = list(s)————变成【‘a',’b‘,’c‘,’d‘,’e‘,’f‘,’g‘】