python2和python3的不同: Unicode(统一码、万国码),在3里面可以直接写中文了。

            python2里rae_input与python3中的input效果一样

在计算机内存中,统一用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换成UTF-8保存到文件。

用记事本编辑的时候,从文件读取的UTF-8字符被转换成Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换成UTF-8保存到文件:

浏览网页的时候,服务器会把动态生成的Unicode内容转换成UTF-8在传输到浏览器:

python基础:

  字符串

    转义字符:\   可以转移很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

    

      如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义

    

      如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容

    

      如果写成程序并存为.py文件,就是:

    

布尔值

  True  &  False    可以用and、or、not进行运算

Python字符串问题

  由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes

  Python对bytes类型的数据用带b前缀的单引号或双引号表示: x = b'ABC'

  要注意区分'ABC'b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节

  以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

  

  纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

  在bytes中,无法显示为ASCII字符的字节,用\x##显示。

  反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

  

  计算str包含多少个字符,可以用len()函数

格式化

  %运算符就是用来格式化字符串的,在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。

  常用占位符有:

  

format()

  另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……,不过这种方式写起来比%要麻烦得多:

  

list

  Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

  比如,列出班里所有同学的名字,可以用一个list表示:  classmates = ['tom', 'jane', 'boy']

  可以用len()来获取list元素个数,可以用索引来访问list中每一个位置的元素

  也可以把元素插入到指定的位置,比如索引号为1的位置:

    classmates.insert(1, 'Jack')

  要删除list末尾的元素,用pop()方法

tuple

  另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改

  比如,列出班里所有同学的名字 classmates = ('tom', 'jane', 'boy')

  注意: 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义: t = (1,)

dict

  键-值存储(key-value)

  例如  d = {'Tom' : 23, 'Jane' : 26, 'Michael' : 18}

    如果要增加字典的值,则可以  d['Adam'] = 99

    判断key是否存在: 'Tom' in d  通过返回的布尔值来判断是否存在

    获取value可以这样:d.get('Tom')

    删除key: d.pop('Tom')

通过key计算位置的算法称为哈希算法(Hash)

set

  set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

   要创建一个set,需要提供一个list作为输入集合: s = set([1, 2, 3])

  重复元素在set中自动被过滤

  通过add(key)方法可以添加元素到set中;  例:s.add(4)

  通过remove(key)方法可以删除元素;例:s.remove(4)




函数

  调用函数 

    求绝对值的函数abs,调用abs函数:  abs(-20)  返回结果就是20

    调用max函数,返回最大的那个值:  max(2, 7)

  数据类型转换

    整型:int    浮点型:float   字符型:str   布尔型:bool

函数举例:添加了错误和异常处理  (数据类型检查可以用内置函数isinstance()实现)

def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x

函数的参数

  位置参数

    def  my_abs(x, n, b):   其中x n b都是位置参数

  默认参数

    def my_abs(x, n, b=3): 其中b=3就是默认参数

  可变参数

    def calc(*numbers):  就是可以传任意个数的参数,这些可变参数在函数调用时自动组装为一个tuple

  关键字参数

    def person(name, age, **kw):   也可以传入任意个数的参数,但这些关键字参数在函数内部自动组装过程一个dict

  命名关键字参数

    def person(name, age, *, city, job): 命名关键字参数需要一个特殊的分隔符*,*后面的参数被视为命名关键字参数

    调用方式如下:  person('Tom', 24, city='Beijing', job='Engineer')

    注: 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

      def person(name, age, *args, city, job):   

     命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名

Python笔记记录的更多相关文章

  1. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  2. Python:笔记(5)——错误、调试和测试

    Python:笔记(5)——错误.调试和测试 错误处理 1.TRY语句 这个和Java中的语法是及其相似的,catach换成except. 说明:同样,不管有没有错误,fianlly都会执行的! 补充 ...

  3. 【和孩子一起学编程】 python笔记--第一天

    [该随笔记录本人在阅读过程写的笔记和一些问题,格式比较随意,不定时更新] 由于该书使用的python版本为2.5,本人使用的为3.6. 第一章: 遇到的第一个问题: 1.3节 输出指令: print ...

  4. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  5. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  8. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  9. Activiti 学习笔记记录(2016-8-31)

    上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

随机推荐

  1. 利用matlab摄像机标定

    (1)输入图像 "Image names"键 Matlab的图形窗口显示出20幅靶标图像 (2) 提取角点 "Extract grid corners"键. 输 ...

  2. grunt-npm编译bootstrap源码

    因为gmu需要用编译的方式下载,于是联想到bootstrap什么less sass编译 less先学,据说基于js编译和less编译器,安装起来详细, sass据网上介绍基于ruby, 以下为在mac ...

  3. cnzz广告管家使用心得

    步着谷歌广告管家的后尘,国内百度公司和知名网络流量数据统计公司cnzz也分别推出了百度广告管家和cnzz广告管家.笔者分别注册了这两个网站.通过一段时间的使用,写下此文,希望对各位站长朋友们有所帮助. ...

  4. Eclipse4.4.2手动安装Veloeclipse-2.0.8

    引言:     新安装了Eclipse最新版本 4.4.2 Luna(月神),由于项目中使用到了模板引擎Velocity,所以想安装一个Velocity插件, 在网上找了一下,看到Google的vel ...

  5. 使用Spring Boot快速构建基于SQLite数据源的应用

    为了提供一个单包易部署的服务器应用,考虑使用Spring Boot,因为其集成了Apache Tomcat,易于运行,免去绝大部分了服务器配置的步骤. 项目初始化 首先从mvn archetype:g ...

  6. opencl 和Renderscript总结

    在android上要开发opencl.手机端要有libopencl.so文件(也就是opencl驱动).可是如今android手机端非常少有这个文件.原因是尽管AMD.Intel.NVIDIA.苹果等 ...

  7. 【Nginx系列】Nginx编译与安装

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器.Nginx是由Igor Sysoev为俄罗斯访问第二的Rambler.ru站点开发的. 一.Nginx ...

  8. win10安装ubuntu16.04双系统历程

    目录 win10安装ubuntu16.04双系统 历程 安装时间 安装准备 安装过程 其他问题 win10安装ubuntu16.04双系统 历程 安装时间 2018.11.30 安装准备 u盘(格式化 ...

  9. ajax的get和post请求 -- 基于flask 简单示例

    需求:在浏览器端输入姓名,将数据发送给后端,后端将内容追加到 user.json 中,并将该文件中的数据,返回到浏览器打印 1.浏览器端(html文件) index.html文件 <!DOCTY ...

  10. OOP面向对象

    一:什么是面向过程 我们是怎么思考和解决上面的问题呢? 答案是:我们自己的思维一直按照步骤来处理这个问题,这是我们的常规思维,这就是所谓的面向过程POP编程   二:面向过程POP为什么转换为OOP ...