python基础整理笔记(一)
一. 编码
1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII).
# -*- coding: utf-8 -*- print 'hello world'
2. str类型也是经过编码的有各种格式,和unicode字符串之间需要通过decode和encode互相转换.使用示例如下:
a = '中文' b = a.decode('utfi-8') c = b.encode('gb2312')
3. 在python3中默认直接使用unicode,所以不需要注释编码了。python3中的str类型本身就是unicode,所以不再需要编码和解码。另外还有一个bytes类型,可以编码与str进行转换,和2中的str有很多相似的地方。
4. 各种编码小知识总结:
ascII:只包含英文 2^8 = 256 表示0~256:266种可能。
Unicode:万国码,包含所有字符 最少用两个字节 1byte = 8bit,可以表示2^16+1种可能 。
Utf-8: 英文、数字、符号:8位 欧洲:16位 中文:24位。
二. 变量
1. 变量命名规则:
(1)首字母为英文和下划线,其它部分则可以是英文、数字和下划线,区分大小写。python的变量命名推崇使用下划线区分单词的方式来命名,而不使用驼峰法。(其实python的类推荐用驼峰命名。)
(2)此外变量命名不能是python语法中的一些关键字,如['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']。
(3)然而python内部的类或特有的方法是可以被拿来命名变量的,这相当于起到了一个覆盖的效果,所以也应该避免,不推荐:如下图中所示,变量命名覆盖了原有功能"type"。
2. str变量赋值
(1)python中str类型是不可变的,在内存中生成以后就一直是这个字符串,当把一个字符串变量的内容改变时,其实只是将这个变量名指向了一个新的字符串内容:
(从图中我们可以看到a, b两个变量id是一样的,即其实指向的是一个相同的字符串。)
(2)python中的str类型虽然不可变,但是在使用上我们还是可以对其进行改变,但这也只是将原有的变量名指向改变以后新生成的str而已:
(从图中可见我们操作了变量a,成功将之修改,但是修改后其id已经改变;此外可以看到原有的b变量依旧指向原有的字符串内容,并没有随着a的改变一起变化)。
(3)但其实上面说的情况也不是一定的,当申请超过256字节的大变量时,python就会用malloc重新分配内存,即使两个变量的字符串内容一样,也是两个不同的内存地址了,如图所示:
3. int变量赋值
python中的int类型也有类似str的情况,在-5到257这样的小的常用整数里,系统已经初始化好,我们不同的变量如果值相等,实际指向的是内存中同一int,如图所示:
但是超过这个范围的就是在申明变量时候新生成的了,如图所示,可以看到id已经不同了:
4. bool类型变量
python中的bool类型为两种, True和False,可以做bool判断如下:
a = True
if a:
print (1)
else:
print (2)
三. 判断分支
1. python中的判断都是通过 if, else, elif 这几个关键字实现的,并没有类似其他语言中的switch case语法,示例如下
a = 3
if a is 3:
print a
elif a is 2:
print 22
else:
print 1
2. 需要注意的是在python的if判断中,并非只有bool类型的变量可以使用,str, int, float甚至list, tuple, dict等容器也可以直接在判断中,所以使用的时候一定要小心,整理如下:
(1)str的空字符串会在if判断中为False,其他均为True
(2)int中0会判断为False,其他均为True
(3)float0.0判断为False,其他均为True
(4)空的容器如list,tuple,dict判断为False,其他为True
四. 循环语句
1. 第一种循环的语句是使用while关键字,使用示例如下:
i = 0
while i < 5:
print i
2. break 和 continue 两个功能分别用于跳出整个循环流程,和直接进入下一次循环,使用示例如下:
i = 0
while i < 100:
if i % 2:
continue
if i == 99:
break
print i
3. while语句其实也可以搭配else使用,这是python一种特殊的语法,else里语句只会在while正常结束时被执行(即break这种中断跳出的不会执行else内容),示例如下:
i = 0
while i < 100:
if i % 2:
continue
if i == 99:
break
print i
else:
print 'aaa'
python基础整理笔记(一)的更多相关文章
- python基础整理笔记(九)
一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...
- python基础整理笔记(五)
一. python中正则表达式的一些查漏补缺 1. 给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2. 将之前取名为"name"的分组所获得的 ...
- python基础整理笔记(四)
一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...
- python基础整理笔记(八)
一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...
- python基础整理笔记(七)
一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...
- python基础整理笔记(三)
一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...
- python基础整理笔记(二)
一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似 ...
- python基础整理笔记(六)
一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
随机推荐
- python基础07 函数
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后 ...
- dedecms代码研究四
partview php文件之前,我们像掉进沼泽一样,看到无尽的变量,数组元素,莫名其面的东西摆在我们面前.今天,我们继续艰难前行,想办法走出partview类的泥潭.上一篇,我们胡乱分析了partv ...
- Ubuntu 12.10使用apt安装Oracle/Sun JDK
apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get ...
- PCI Express(一)- Connector
在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Ex ...
- 安装和使用memcached
引用:http://www.czhphp.com/archives/252 如何将 memcached 融入到您的环境中? 在开始安装和使用 using memcached 之前,我们需要了解如何将 ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
- UICollectionView布局功能
UIConllectionView和UITableView类似,也是展示数据,但不同于UITableView那种规则的布局,UICollectionView可以实现不规则的布局,即瀑布流. 创建UIC ...
- sqoop1.99.6 update导出语句
我们采用sqoop-export插入数据的时候,如果主键已经存在了,插入会失败.想要根据主键判断是否要进行insert操作还是update操作,sqoop提供了update语法.示例 sqoop -- ...
- golang 格式化时间为字符串
package main import ( "fmt" "reflect" "time" ) func main() { //格式化字符串为 ...
- Python字典方法总结
1.清空字典中元素清空,dict变为{} L.clear()-> None. Remove all items from L 1 2 3 4 >>> L ={'shaw':2 ...