python变量与数据类型
变量
什么是变量
所谓变量,指的是在程序运行过程中需要用到的中间结果,变量定义后,会占用一块内存开辟的空间地址,通过内存空间确保同一时间的唯一性。
>>> print(id.__doc__)
Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects.
(CPython uses the object's memory address.)
变量的命名规则
1)变量只能是大小写字母、数字和下划线的任意组合,并且开头不能是数字。
2)python中的关键字不能声明为变量使用。
3)变量名描述性要强
>>> 1_level = 1
File "<stdin>", line 1
1_level = 1
^
SyntaxError: invalid syntax >>> level_1 = 1 >>> _level1 = 1 >>> print = 10 >>> print(level_1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
字符编码
ASCII(美国标准信息交换代码)字符编码,用于显示现代英语和西欧语言,最多只能用8位来表示,即1字节,最多2**8 - 1 = 255个符号。
关于中文
1980年设计出了用于存储中文的GB2312,一共收录7445个字符,包括6763个字符和682个其他符号。
1995年设计出了可以收录21886个符号的GBK1.0,2000年GB18030取代GBK1.0的正式国家标准,可以收录27848的汉字。
为了解决不同国家之间经常出现的字符不兼容问题,推出了Unicode(统一码,万国码,单一码),为每种语言的每个字符制定了统一的并且唯一的二进制编码,每个字符统一占用2个字节。
为了解决Unicode在存储英文时多占用1个字节,继续优化出了世界上最流行的UTF8可变长字符编码,英文1个字符还占1个字节,欧洲语言1个字符占2个字节,中文1个字符占3个字节。
python2的解释器在加载.py字节码文件时,使用默认的(ASCII)字符编码,于是不支持中文。
cat hello.py
#!/usr/bin/env python
print '世界,你好' python hello.py
File "hello.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file hello.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
那么,在Python2中,使用中文时需要声明支持中文的字符编码。
cat hello.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
print '世界,你好' python hello.py
世界,你好
python3默认会使用UTF-8字符编码,默认就支持中文。
Python 3.5.2 (default, Dec 2 2016, 17:47:43)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print('世界,你好')
世界,你好
数据类型
数字类型:不加引号的数字
int(整型)
在32位的系统上,整数的位数为32,取值范围从-2**31~2**31-1,即:-2147483648~2147483647
在64为的系统上,整数的位数为64,取值范围从-2**63~2**63-1,即:-9223372036854775808~9223372036854775807
long(长整形)
在python2中使用,如果整数发生溢出,python会自动将整数数值转换为长整形数值,python3中已经不再使用。
float(浮点型)
属于有理数中特定子集的数的数据表示,大约理解为小数,占用8个字节。
数字类型创建
>>> number = 10
>>> type(number)
<class 'int'>
>>> number = int(10)
>>> type(number)
<class 'int'>
布尔值
真或假 True False 1 或 0 ,真代表条件成立。
>>> 12 + 20 > 30
True
>>> 12 + 20 > 35
False
字符串类型:被引号括起来的字符,字符串不能被修改!
字符串创建:可以使用单引号、双引号以及三个单引号或者三个双引号创建,三引号可以换行。
>>> string = 'hello world'
>>> string
'hello world'
>>> string = "hello world"
>>> string
'hello world'
>>> string = '''hello
... world'''
>>> string
'hello\nworld'
>>> string = """hello
... world"""
>>> string
'hello\nworld' 还可以指定字符串类型创建:
>>> string = str('hello world')
>>> type(string)
<class 'str'>
>>> string
'hello world'
字符串常用方法:
strip(): 去除字符串两侧的空格,lstrip()去除字符串左侧的空格,rstrip()去除字符串右侧的空格。
>>> name = ' pangjinniu '
>>> print(name.lstrip())
pangjinniu
>>> print(name.rstrip())
pangjinniu
>>> print(name.strip())
pangjinniu
下标:取字符串中的1个字符
>>> name
' pangjinniu ' -> j是字符串的第6个字符,使用下标时从0开始
01234567891011
>>> print(name[5])
j 字符串不能被修改:
>>> name[1] = 'P'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
切片: 取字符串中的多个字符,切片的方法叫顾头不顾尾。
>>> string = "hello world"
012345678910
>>> string[0:5]
'hello'
>>> string[6:]
'world' 切片默认从左往右,-号表示从右往左。
>>> string = ''
>>> string[:]
''
>>> string[::-1]
'' 通过使用步长,可以指定每次取出几个字符后显示第1个字符。
>>> string[::2]
''
>>> string[::-2]
''
拼接: 使用+号,每拼接1次就会开辟一块内存空间,不推荐使用,字符串类型和数字类型不能拼接。
>>> name = 'pangjinniu'
>>> age = ''
>>> print('my name is '+name+' i\'m '+age+' years old.')
my name is pangjinniu i'm 31 years old. 只能是字符串之间完成拼接
>>> age = 31
>>> print('my name is '+name+' i\'m '+age+' years old.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
格式化输出:使用%,可以传入多种数据类型。
>>> name = 'pangjinniu'
>>> age = 31
>>> print('my name is %s , i\'m %s years old.' % (name,age))
my name is pangjinniu , i'm 31 years old. >>> print('my name is {0} , i\'m {1} years old.'.format(name,age))
my name is pangjinniu , i'm 31 years old. >>> print('my name is {_name} , i\'m {_age} years old.'.format(_name=name,_age=age))
my name is pangjinniu , i'm 31 years old.
split():字符串切分并返回列表类型,默认使用空格进行切分
>>> string = 'hello world'
>>> print(string.split())
['hello', 'world']
center():字符串内容居中与填充
>>> string = 'hello world'
>>> len(string)
11 >>> string.center(21,"*")
'*****hello world*****'
count(): 统计字符串里某个字符出现的次数
>>> string = 'hello world'
012345678910
从头到尾:
>>> string.count('o')
2
从字符串位置1到7:
>>> string.count('o',0,7)
1
startswith():判断字符串是否以指定前缀开头
>>> string.startswith('h')
True
>>> string.startswith('w')
False 指定搜索范围
>>> string.startswith('w',6)
True
endswith():判断字符串是否以指定后缀结尾
>>> string = 'hello world'
>>> string.endswith('d')
True
>>> string.endswith('o')
False 指定搜索的范围
>>> string.endswith('o',0,5)
True
find():检查字符串中是否包含子字符串
>>> string
'hello world' 返回下标位置
>>> string.find('hello')
0
>>> string.find('o')
4
>>> string.find('world')
6 没有找到返回-1
>>> string.find('World')
-1
index()与find()相似,只是在没有找到子字符串后会报错
>>> string = 'hello world'
>>> string.index('hello')
0
>>> string.index('world')
6
>>> string.index('World')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
isalnum():检查字符串是否由字母或数字组成
>>> string = 'pangjinniu'
>>> string.isalnum()
True
>>> string = '31'
>>> string.isalnum()
True
>>> string = 'pangjinniu31'
>>> string.isalnum()
True
>>> string = 'pangjinniu '
>>> string.isalnum()
False
isalpha():字符串只由数字组成
>>> string = '31'
>>> string.isdigit()
True
>>> string = 'pangjinniu31'
>>> string.isdigit()
False
join():将序列中的元素添加指定字符,并生成新的字符串
>>> string = ('','usr','local','bin')
>>> '/'.join(string)
'/usr/local/bin'
replace():将字符创中旧的字符串转换为新的字符串
>>> string = 'hello world'
>>> string.replace('hello','Hello')
'Hello world'
列表常用方法
append():追加成员
>>> name = ['user1','user3','user4']
>>> name.append('user5')
>>> name
['user1', 'user3', 'user4', 'user5']
insert():插入成员到任意位置,通过下标指定。
>>> name.insert(1,'user2')
>>> name
['user1', 'user2', 'user3', 'user4', 'user5']
del:通过下标删除成员
>>> name
['user1', 'user2', 'user3', 'user4', 'user5']
>>> del name[2]
>>> name
['user1', 'user2', 'user4', 'user5']
remove():直接删除列表中的成员
>>> name
['user1', 'user2', 'user4', 'user5']
>>> name.remove('user4')
>>> name
['user1', 'user2', 'user5']
pop():显示列表指定位置的成员并删除,默认显示、删除最后一个成员
>>> name = ['user1','user2','user3','user4','user5']
>>> name.pop()
'user5'
>>> name
['user1', 'user2', 'user3', 'user4']
>>> name.pop(0)
'user1'
>>> name
['user2', 'user3', 'user4'] 使用append(pop())感觉就像是队列
>>> name.append(name.pop())
>>> name
['user2', 'user3', 'user4']
index():查看列表成员的下标位置
>>> name
['user1', 'user2', 'user5']
>>> name.index('user2')
1
>>> name[name.index('user2')] = 'User2'
>>> name
['User2', 'user3', 'user4']
count():统计列表中成员出现的次数
>>> name
['user1', 'user2', 'user5', 'user2']
>>> name.count('user2')
2
sort():按照ASCII码顺序排序列表
>>> name.sort()
>>> name
['user1', 'user2', 'user2', 'user5']
reverse():反向排序
>>> name.reverse()
>>> name
['user5', 'user2', 'user2', 'user1']
运算:and or not in not in is is not
name = 'pangjinniu'
age = 29
mac = True and
>>> name == 'pangjinniu' and age < 30
True
>>> name == 'pangjinniu' and age > 30
False or
>>> name == 'pangjinniu' or age > 30
True
>>> name == 'pangjinniu ' or age > 30
False or ... and , or 后面是一个整体条件
>>> mac = False
>>> age > 30 or name == 'pangjinniu' and mac == True
False >>> mac = True
>>> age > 30 or name == 'pangjinniu ' and mac == True
False not
>>> mac = False
>>> age > 30 or name == 'pangjinniu' and not mac == True
True in
>>> names = ['user1','user2','user3']
>>> name = 'user1'
>>> name in names
True not in
>>> name not in names
False is
>>> name is 'user1'
True
>>> name is 'user2'
False is not
False
>>> name is not 'user1'
False
>>> name is not 'user2'
True
python变量与数据类型的更多相关文章
- Python变量和数据类型(入门2)
转载请标明出处: http://www.cnblogs.com/why168888/p/6400809.html 本文出自:[Edwin博客园] Python变量和数据类型 一.整数 int = 20 ...
- python入门课程 第3章 Python变量和数据类型
第3章 Python变量和数据类型3-1 Python中数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形 ...
- Python变量、数据类型6
1.Python变量 变量,即代表某个value的名字. 变量的值存储在内存中,这意味着在创建变量时会在内存中开辟一个空间. !!!即值并没有保存在变量中,它们保存在计算机内存的深处,被变量引用.所以 ...
- 【python系列】--Python变量和数据类型
python数据类型 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用 ...
- Python 变量和数据类型
变量的定义与赋值 Python 是动态语言,我们不需要为变量指定数据类型,只需要输入变量名和值就行了.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 此外 Python 允许你同时为多个变 ...
- Python变量和数据类型
十六进制用0x前缀和0-9 a-f表示 字符串是以''或""括起来的任意文本 一个布尔值只有True和False两种值 布尔值可以用and or not运算 空值是 ...
- Python变量及数据类型
所有编程语言几乎都会有 ’ 变量‘ ,如 a = 2,用一个a变量指代数字2,在Python中,一切皆对象,因此在变量赋值的时候实际上是在内存中开辟了一块存储变量内容的内存空间对象. 对象可以指定不同 ...
- Python 变量与数据类型
1.变量命名规则: 变量名只能是字母,数字和下划线的任意组合 变量名第一个字符不能是数字 变量名区分大小写,大小写字母被认为是两个不同的字符 特殊关键字不能命名为变量名 2.数值的运算 print ( ...
- Python变量和数据类型,类型转换
a.变量的定义 把数据分别用一个简单的名字代表,方便在接下来的程序中引用. 变量就是代表某个数据(值)的名称. 变量就是用来存储数据的,将不同的数据类型存储到内存 b.变量的赋值 变量名= 初始值 ...
随机推荐
- Java 和 IOS 区别
Java接口与Objective-C正式协议类似,因为都需要实现 一组方法.Java具有抽象类,但Objective-C没有.Java具有类变量,但Objective-C中,可以使用文件范围内 ...
- 【未来畅想】未来的电信通讯行业,账号密码将取代sim卡
今天看到一条新闻,是关于LG模块化的手机,LG将手机电池模块化了,很多人一片叫好,但是我认为模块化手机无法成为未来的趋势,原因如下:模块化必然要增加手机的卡口.插口增,意味着体积也大大增加,手机正因为 ...
- JavaScript利用闭包实现模块化
利用闭包的强大威力,但从表面上看,它们似乎与回调无关.下面一起来研究其中最强大的一个:模块. function foo() { var something = "cool"; va ...
- ssi-uploader上传图片插件,点击选择文件按钮自动提交表单解决办法
先介绍一下这款插件,然后再谈使用中可能遇到的问题 ssi-uploader是一个JQuery的图片上传插件,界面比较美观 github地址:https://github.com/ssbeefeater ...
- Linux笔记(二) - 权限管理
(1)改变文件或目录权限:chmod{ugoa}{+-=}{rwx}{mode=421}-R 递归修改可以同时更改多个 chmod g+w a.txt b.txt c.txt例:chmod g=rwx ...
- vue使用resource发送ajax请求
<script type="text/javascript"> new Vue({ el:'#app', created:function(){ var url=&qu ...
- shell 分支/循环
==)); then patern="Update" else patern="Read" fi in "-h") ] then helpI ...
- win7、win8.1淡绿色护眼模式设置
Win7设置: 右击桌面 -> 个性化 -> 窗口颜色 -> 高级外观设置 选中 -> 项目:窗口 颜色:其他 修改:色调 饱和度 亮度 红 绿 蓝 添加到自定义 ...
- Linux sendmail 详解
Internet上最基本的服务,现在应该大部分人都有自己的邮箱吧,用的人多,但理解的人估计没多少,我自己以前也是常常用,但对其原理并不操心.今天就来操心下,进行个小总结 一.邮件服务的基本流程 ...
- 关于Two-Pass标记连通域个数
关于Two-Pass标记连通域个数 背景 在完成图像的一系列处理后,得到二值图,一般会统计目标数量,即是获取连通域个数,这里采用TwoPass的方法. 基本思想 在Two-pass连通域标记中,第一次 ...