这是个人学习笔记,非教程,内容会有些混乱

极简教程

 
 

数据类型

我们可以使用type()函数类获取对象的类型,Python3中内置数据类型包括:None,int,float,complex,str,list,dict,tuple,set,frozenset,range等,Python2中还有long类型,Python中并没有内置数组类型。

dict,list,set这些是可变类型(用户自定义类型也可变),可以改变类型对象的值;数值和字符串类型则是不可变的。

  • str
    与js一样,python中字符串即可用单引号也可用双引号表示

  • numbers
    Python3中数值类型有:intfloat两种

  • list
    字面量表示:[1,1.0,False,'list']
    列表推导式,创建列表的一种简易方法:

     

  • tuple
    字面量表示:(1,1.0,False,'tuple')

  • range

list、tuple、range均属于序列类型(Sequence Types)

  • dict

     

  • set/frozenset
    集合是不包含重复元素的数据集,frozenset是不可变的,set是可变的,可以使用字面量构建一个集合{1,2,2,4,5}会输出{1,2,4,5}

     

类型转换

Python中类型转换只需调用相关函数即可


函数

# 函数定义模板
def func_name([self,][args]):
pass def say_hello():
print('hello python!') # python3.5之后,定义函数时可以添加类型说明
# 这里只是提供一个说明文档而非强制类型约束
def type_instruction(num:int)->int:
return num

定义多返回值函数

# 多返回值函数,返回一个tuple对象
def multi_returns():
return 0,1

内置函数

Python中有许多内置函数

  • dir
    我们可以使用dir()函数来查看对象都含有哪些成员:

     

  • map

     

  • filter

     

  • reduce不是内置函数,但也很有用

     

lambda

Python中使用lambda关键字即可创建lambda表达式:

 

*args 与 **kvargs

*args**kvargs都用于函数中接收多个参数,这里argskvargs只是约定俗成的写法,可以换成其它的名称,但***则是必须的。
*args**kvargs的区别是,*args用于接受普通参数,**kvargs用于接受键值对参数。

 

 
 

三元运算符

 

面向对象

Python中一切皆对象(这句话理解起来并不是那么容易),包括函数(C#,JAVA中函数不能独立存在)。这里贴一篇以前写的文章:Python中的类、对象、继承

Python按赋值传递参数,对于不可变对象在修改时会产生新的对象;而对于可变对象,所有的修改都会反映在原有对象上。

魔术方法是Python对象模型的重要部分。

可以动态的给对象/类型添加属性,若给类型添加属性,则该属性在已产生的实例上也是可见的:

 

异常与错误

Python中异常与错误类间关系如下:

 

自定义异常只需继承Exception或各种Error类即可

异常处理

try:
raise IOError('使用raise语句抛出异常')
except IOError as err:
print(err)
else:
print('未发生异常则执行')
finally:
pass

捕获多个异常类型:

try:
raise IOError()
except (IOError,TypeError):
pass

with语句

with...as...语句等价于try...finally...,与C#中的using语句类似


命名规范

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.

应该避免的名称

  1. 单字符名称, 除了计数器和迭代器.
  2. 包/模块名中的连字符(-)
  3. 双下划线开头并结尾的名称(Python保留, 例如init)

命名约定

  1. 所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的.
  2. 用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含).
  3. 用双下划线(__)开头的实例变量或方法表示类内私有.
  4. 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.
  5. 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py). 尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰.

Python之父Guido推荐的规范

Type Public Internal
Modules lower_with_under _lower_with_under
Packages lower_with_under  
Classes CapWords _CapWords
Exceptions CapWords  
Functions lower_with_under() _lower_with_under()
Global/Class Constants CAPS_WITH_UNDER _CAPS_WITH_UNDER
Global/Class Variables lower_with_under _lower_with_under
Instance Variables lower_with_under _lower_with_under (protected) or __lower_with_under (private)
Method Names lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private)
Function/Method Parameters lower_with_under  
Local Variables lower_with_under  

包与模块

  • 模块
    包含Python语句或定义的文件就是一个模块,文件名就是模块名。在一个模块中,模块名是全局变量__name__的值。


  • 包含__init__.py文件的文件夹即可视为一个包,包用于管理模块,可以防止模块命名冲突。如:A.CB.C,分别表示A包中的C模块和B包中的C模块。

  • 导入模块
    import aimport a as aliasfrom a import *from a import b,c
    Python解释器会先从内置模块中寻找导入的模块,然后从sys.path中指定的模块搜索路径寻找模块

测试

编写一个文件操作类,文件名为file_operator.py

# coding=utf-8

import codecs

class FileOperator:
def save_file(self, file_path, content, encoding="utf-8"):
with codecs.open(file_path, "w", encoding) as f:
f.write(content)

编写测试用例,文件名为test_file_operator.py

# coding=utf-8

import unittest

class TestFileOperator(unittest.TestCase):
def test_save_file(self):
content = "file content \r\n 文本内容"
opt = file.FileOperator()
opt.save_file("1.txt", content) if __name__ == "__main__":
unittest.main()

工具推荐

小结

以上是自己近期学习Python的一些总结,全文的主要关注点在Python语言本身。掌握以上内容后,便可以用Python写些脚本,辅以其他第三方包或框架就可以干更多更复杂的事了。如,爬虫、数据分析、后端开发以及现在比较热的人工智能(其实,我是不建议追热点的)。

用了一段时间的Python后,会觉着Python挺有意思的。

最后附上一张,个人总结的语言学习套路:

 

推荐阅读

人生苦短,为什么我要用Python?
Python风格规范
Python语言规范
[Python]内存管理
Python进阶
Python 入门指南
Python 3.7.0 documentation

Python知识梳理的更多相关文章

  1. python 知识梳理

    1.数据类型:字符串,列表,元组,字典,集合.处理每种数据类型的函数 2.判断与循环部分 3.高级函数:lambda,map,reduce,filter 4.自定义模块以及第三方模块 5.函数式编程 ...

  2. spring远程服务知识梳理

    序:本文主要是总结和归纳spring的远程服务相关知识,可作为入门学习笔记.写博客目的也是为了进行知识梳理,便于以后查看.本文主要参考资料 spring 实战第三版 本文主要讨论内容如下: 远程调度概 ...

  3. 软件测试人必备的 Python 知识图

    之前发过蛮多不少关于 Python 学习的文章,收到大家不少的好评,不过大家也有许多困惑: 现在测试不好做,是不是真的该重新去学一门热门的语言? 入门 Python 该学哪些知识点?该看哪些书? 可以 ...

  4. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  5. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  6. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  7. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  8. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  9. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

随机推荐

  1. 获取IP地址方法

    function getip() {     static $ip = '';     $ip = $_SERVER['REMOTE_ADDR'];     if(isset($_SERVER['HT ...

  2. 利用python同步windows和linux文件

    写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,然后再利用网络copy,重复性很大,就想着能不能写一个小脚本帮我同步 逻辑:比对本地和服务器文件的 ...

  3. 向Word添加一段文本

    文档层次结构 [段落之后] 是一段连续文本,它定义具有一组常见属性的文本区域.一段连续文本由 r 元素表示,这样创建器便可组合换行.样式或格式设置属性,从而将相同信息应用于一段连续文本的所有部分. 正 ...

  4. hdu 4911 Inversion and poj2299 [树状数组+离散化]

    题目 题意:  给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序对个数是多少. 给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数 等于 整个序列的 ...

  5. unicode 编解码记录

    unicode 万国码.世界上所有的符号都有对应的Unicode code point.一般是2个字节. 这个字节可以通过任意中方式编码为二进制,例如用来保存到文件.一般通过UTF-x(例如utf-8 ...

  6. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  7. 2.第一个ASP.NET MVC 5.0应用程序

    大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...

  8. Linux和Windows下tomcat开机自启动设置

    Linux下tomcat的开机自启动设置 1.修改系统文件rc.local:vi /etc/rc.d/rc.local rc.local是给用户自定义启动时需要执行的文件,和windows里面的“启动 ...

  9. docker 安装 RabbitMQ

    1.镜像中国(http://www.docker-cn.com/registry-mirror):直接使用https://hub.docker.com下载镜像比较慢,使用镜像中国加速 使用例子:$ d ...

  10. 前端学习之路-CSS介绍,Html介绍,JavaScript介绍

    CSS介绍 学前端必备掌握CSS样式,css为层叠样式表,用来定义页面的显示效果,加强用户的体验乐趣,那么如何用css到html中呢? style属性方式 利用标签中的style属性来改变显示样式 & ...