python学习心得第二章
python基础
1.关于python编码的问题。
python的编码现在主要是两种版本python2.7和python3.5
python2.7默认的是ascii码进行编译,我们可以采用
# -*- coding:utf-8 -*-
a='你好'
a_unicode=a.decode('utf-8')
a_gbk=a_unicode.encode('gbk')
print('a_gbk')
的代码将2.7转化为用utf-8的方式进行编译,但是如果终端显示的只能是GBK的编码模式,还需要将utf-8转化为GBK。由代码可知,我们需要将utf-8转化为Unicode,然后将Unicode转化为gbk。
注意:在转化的时候解码和编码的过程需要明确知道现在对应的gbk还是utf-8。
图中为编码和解码的流程图
python3.5为了帮助我们更好的编码进行了优化,因为python3.5采用的默认就是utf-8。并且我们不用再转化为Unicode了可以直接把utf-8转化为gbk。
a='你好'
a_gbk=a.encode('gbk')
代码中直接将你好编译成了gbk模式,因为py3.5内部移除了Unicode的类型。
注意:Windows为了方便大家在终端使用的时候方便,只要你输入的Unicode的代码,它就自动可以转化为gbk,所以在py2.7里面我们直接吧utf-8转化为Unicode以后便可以在终端输出了.
2.python的运算符(py3.x版本)
1:算数运算符
加法运算:


减法运算:


乘法运算:


除法运算:


注意上面的3.0为浮点型即为小数点型。
幂运算:


**号后面的数为幂即为次方
取余数的运算:


取整数的除法,返回商的部分。


不要小数点后面的部分
2:比较运算符
相等运算:


由图由于a和b的值不是相同的,所以返回一个False相反,如果相等应该返回一个True
不相等运算:


大于运算:


小于运算:


大于等于运算:


小于等于运算:


3:赋值运算符:
赋值运算:


加法赋值运算:


b+=a和b=b+a是同一个效果
减法赋值运算:


乘法赋值运算:


除法赋值运算:


取余数赋值:


幂运算赋值:


整除赋值运算:


4:逻辑运算符
and


一个条件不满足就不成立
or


一个条件成立即满足条件
5:成员运算符
in


如果a在b里面这返回True
not in


如果a不在b里面则返回True
3.基本数据类型
基本数据类型主要分为int 、bool、 字符串、字典、元组、列表。
它们每一个都有自己的功能,并且在python里面我们统称为class(类),这些不同的类所创作的变量我们统称为了对象。
1:bool值
True或False
1或0
2:数字
int(整形)
在32位的电脑上面,整数的位数是32,取值范围为-2**31~2**31-1.
在64位的电脑上面,整数的位数是64,取值范围为-2**63~2**63-1.
如果超出上面的取值范围,我们则会由int型转换为long型,到达long以后根据内存的大小决定取值范围,这是针对python2.2,py2.7和py3.x以后int就变成没有限制。根据内存的大小来决定范围的大小。
int型的赋值:
int的二进制赋值方法


int的十进制赋值方法


对于py2.x来说a和b的内存地址是不同的,但是python内部自己做了优化,减小内存的消耗,所以-5到257以内的数字都是用一个内存地址。


超出-5到257以后就不共用一个内存地址。

但是对于py2.7和py3.x数字的范围没有限制,都是一样的id
class int(object)
"""
int(x=0) -> integer
int(x, base=10) -> integer Convert a number or string to an integer, or return 0 if no arguments
are given. If x is a number, return x.__int__(). For floating point
numbers, this truncates towards zero. If x is not a number or if base is given, then x must be a string,
bytes, or bytearray instance representing an integer literal in the
given base. The literal can be preceded by '+' or '-' and be surrounded
by whitespace. The base defaults to 10. Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4
"
int 里面的内部功能
def bit_length(self): # real signature unknown; restored from __doc__
"""
int.bit_length() -> int Number of bits necessary to represent self in binary.
>>> bin(37)
'0b100101'
>>> (37).bit_length()
6
"""
return 0
def __add__(self, *args, **kwargs): # real signature unknown
""" Return self+value. """
pass
bit.length():可以计算对象在二进制里面最少占几位

__add__的功能:


效果等同于print(a+b)
3:字符串
创建方式:


字符串的类
class str(object):
"""
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.
"""
字符串常用功能:
upper()和lower():将字符串字母变大小写


capitalize:首字母变大写

center:字符串居中以后填充增加物


count:计算字符串的里面字符出现的次数,可以定义范围(第一个字符的位置为0)


如果不定义范围,则全部字符参加计算


i出现的次数总共为两次。
endswith:判断字符串是否以某个字符结尾,可以定义范围


如果不定义范围则是全部字符串查找


expandtabs:默认将tab键变成8个空格,可以修改默认值


\t代表Tab键
find:寻址字符串里面字符的位置,如果没有找到返回-1,同样可以定义范围


没有定义范围就是全程查找


没有找到就返回-1
format:字符串格式化:


{0},{1}对应的format里面值得顺序
index:找字符串里面字符的位置没有找到报错,其余功能与find相同


isalnum:是否是数字和字母
isalpha:是否是字母
isdigit:是否是数字


isupper,islower,istitle,isspace等都用相同的方法进行判断
join:连接iterable的类型,可以设置连接方式


注意iterable里面必须是字符串,不然会报错
ljust和rjust与center用法相同,不同为一个左填充默认值,一个右填充默认值。


lstrip和rstrip:移除左右的空格


strip:默认情况移除所有的空格或者换行符,如果有参数strip('o'),移除前后的o


partition:分割字符串,


replace:从左到右替换字符串里面的字符,可以设定替换的个数




split:分割字符串里面的字符,且返回一个列表,并且列表里面没有被分割的字符


默认的是从左到右,可以用rsplit来从右到左进行分割
splitlines:根据换行符进行分割


startswith:判断是否以某个字符串进行开始 可以定义范围


swapcase:大写变小,小写变大写


title:变成标题


索引:


长度:


切片:


切片最后一位代表步长,就是范围确定以后按照一次读几个数进行输出


循环:


4:列表
创建方式


列表的类
class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""
列表常用功能:
索引:


长度:


切片:


循环:


append:追加


count:计算列表里面元素的个数


extend:批量的扩展元素到列表里面,只能添加iterable功能的


index:找到元素所在列表的索引位置


insert:根据索引位置添加元素


pop:根据索引删除元素并且返回元素的值


remove:移除某个元素


reverse:翻转


del(delete):删除指定索引位置


5:元组
元组和列表几乎是一样的,唯一的差距就是元组的元素无法修改
创建方式:


元组的类
class tuple(object):
"""
tuple() -> empty tuple
tuple(iterable) -> tuple initialized from iterable's items If the argument is a tuple, the return value is the same object.
"""
元组的常用功能
索引:


切片:


循环:


长度:


count:计算元素的个数


index:查找索引位置


注意查找是从左到右
6:字典
字典对于的是两个值key:value
创建方式:


字典的类
class dict(object):
"""
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
"""
字典的常用功能:
索引:


索引值是key,如果key不存在,报错
循环:


默认循环的是key
字典单独输出key、value、item


clear:全部清除


get:根据key获取value,如果key不存在返回默认值none,默认值可以修改


in 检查key是否在字典里面:


popitem:从左到右去拿item


pop:指定key去拿对应的value


update:更新字典,批量增加


del(delete):删除键值对


4.特殊功能用法
enumerate:为循环增加默认的索引


rang:提供一段范围的函数


注意rang()函数有步长的概念,并且步长默认为1


步长可以为负数 即反方向


步长的概念和切片中同样适用
本章总结
1:本章中学到赋值运算,数据类型,数据类型的各种功能,enumerate,rang ,for的用法。
2:__init__是类里面重要且固定的方法
3:py3.5里面读字符串是一个字符一个字符去读,py2.7里面读字符串是一个字节一个字节的读,
并且py3.5里面字节和字符可以相互转换


4:字节在循环的时候只能返回十进制


5:十进制和二进制之间的转换,通过bin(十进制)


6:字节和字符串相互转换


字符串转换为字节


字节转换为字符串
注意转换过程中字节和字符串之间的编码方式必须一致
7:索引取那个元素就是元素本身,切片取元素或一群元素,就是原来切片的类型,例如字符串切片返回字符串,列表切片返回列表
8:列表的嵌套


9:元组不能被修改,指的是元组的元素,但元组的元素内部可以修改,相当于第一层不能改


10:字典的修改方式除了用update还可以用直接dic['k1']=123


如果原来没有key就增加,如果有就更新原来的key
11:一般对于字符串操作都是会产生新的,其余的都不会。如果不是就反过来。
12:fromkeys的用法


注意所有要改变和增加的key都要用()或者【】包含起来。
13:如果要用数字表示key,数字不能相同,字符串不能相同。如果相同会随机抹去一个相同的键值对
14:如果用fromkeys和{}直接创建字典没有什么区别,唯一的不同就是{}里面的keys是独立改变但是fromkeys里面的keys是一起改变
15:python里面的方法,分为类方法和静态方法,类方法只能用类名调用,静态方法可以用类名和对象调用。
16:在字符串里面空格也占一个字符
python学习心得第二章的更多相关文章
- python学习心得第一章
初始python 1什么是程序 计算机程序是一组执行某种动作的的指令.和那些电路.芯片.显卡.硬盘等不同,它不是计算机本身可以触摸的部分,而是隐藏在背后运行在硬件上面的东西.程序就是一系列告诉没有知觉 ...
- Python学习笔记 --第二章
Python语法基础 "#"号为注释符,建议缩进四个空格,Python大小写敏感. 数据类型 整数 0,2等等,以0x开头的为十六进制数 浮点数 1.58e9 字符串 用'或"括起来的任意文 ...
- Python学习系列-----第二章 操作符与表达式
2.1 数学运算和赋值的简便方法 例如: 2.2 优先级 在python中运算符有优先级之分,高优先级的运算符先执行,低优先级的运算符后执行.下面是运算符优先级:(同一行的运算符具有相同的优先级) 2 ...
- python学习心得第五章
python学习心得第五章 1.冒泡排序: 冒泡是一种基础的算法,通过这算法可以将一堆值进行有效的排列,可以是从大到小,可以从小到大,条件是任意给出的. 冒泡的原理: 将需要比较的数(n个)有序的两个 ...
- python学习心得第四章
python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...
- python学习心得第三章
python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(o ...
- 《DOM Scripting》学习笔记-——第二章 js语法
<Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...
- The Road to learn React书籍学习笔记(第二章)
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
- [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”
[HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...
随机推荐
- MyEclipse、Eclipse复制web项目
假设现在已经有一个Java Web项目 ProjectA,现在想做另外一个项目ProjectB,它里面绝大部分功能和结构都可以复用ProjectA中的: 我们就可以通过复制项目的方法来做,具体步骤如下 ...
- Linux环境下SVN服务器端的安装与配置
最近尝试了下在Linux(CentOS6.5)环境下安装与配置SVN服务器端,安装过程中碰到了一些问题,参看了网友们分享的一些心得,并通过自己实际的操作,最终安装与配置成功!总的来说网上的说法芸芸,大 ...
- 【转载】Keil中的USE MicroLib说明
在keil建立ARM的工程时 其中有一项是选 use MicroLIB 由于对KEIL不是很熟悉,于是就查了查,得到了以下信息: microlib 是缺省 C 库的备选库. 它旨在与需要装入到极少量内 ...
- Python从线程获取函数返回值
Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...
- WinRAR压缩操作帮助类
//------------------------------------------------------------------------------------- // All Right ...
- Jsp与servlet本质上的区别
1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长 ...
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...
- oracle并发请求异常,运行时间超长(一般情况下锁表)
1.如果前台无法取消请求出现错误: 则后台更新 update fnd_concurrent_requests set status_code = 'X', phase_code = 'C' w ...
- 可分组的选择框控件(MVVM下)(Toggle样式 仿造单选框RadioButton,复选框CheckBox功能)
原地址: http://www.cnblogs.com/yk250/p/5660340.html 效果图如下:支持分组的单选框,复选框样式和MVVM下功能的实现.这是项目中一个快捷键功能的扩展. 1, ...
- setContentType、setCharacterEncoding、pageEncoding和contentType
request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 response.setContentType("text/html;cha ...