Python知识梳理

简介: 这是个人学习笔记,非教程,内容会有些混乱 极简教程 数据类型 我们可以使用type()函数类获取对象的类型,Python3中内置数据类型包括:None,int,float,complex,str,list,dict,tuple,set,frozenset,range等,Python2中还有long类型,Python中并没有内置数组类型。

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

极简教程

图片来源已不明

数据类型

我们可以使用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()函数来查看对象都含有哪些成员:

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]内存管理](https://chenrudan.github.io/blog/2016/04/23/pythonmemorycontrol.html)
Python进阶
Python 入门指南
Python 3.7.0 documentation

目录
相关文章
|
Unix Python
笨办法学 Python · 续 第一部分:预备知识
第一部分:预备知识 原文:Part I: Initial Knowledge 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要学习的第一件事就是一切事情。
1077 0
|
Python
Python知识总结帖
1、面向对象高级编程中----使用__slots__ 注意点:使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:
537 0
|
C# 数据库 Python
python一些小知识
1、python连接mssql数据库编码问题   python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。
828 0
|
9天前
|
存储 程序员 开发者
Python编程基础:从入门到实践
【10月更文挑战第8天】在本文中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基本概念开始,然后逐步深入到更复杂的主题,如数据结构、函数和类。最后,我们将通过一些实际的代码示例来巩固我们的知识。让我们一起开始这段Python编程之旅吧!
|
3天前
|
设计模式 开发者 Python
Python编程中的设计模式:从入门到精通####
【10月更文挑战第14天】 本文旨在为Python开发者提供一个关于设计模式的全面指南,通过深入浅出的方式解析常见的设计模式,帮助读者在实际项目中灵活运用这些模式以提升代码质量和可维护性。文章首先概述了设计模式的基本概念和重要性,接着逐一介绍了几种常用的设计模式,并通过具体的Python代码示例展示了它们的实际应用。无论您是Python初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和实用的技巧。 ####
|
10天前
|
机器学习/深度学习 数据采集 数据挖掘
探索Python编程的奥秘
【10月更文挑战第7天】本文将带你走进Python的世界,探索其背后的逻辑与魅力。我们将从基础语法开始,逐步深入到函数、面向对象编程等高级特性,最后通过实际项目案例,让你体验Python的强大与便捷。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启发。
|
11天前
|
IDE 开发工具 Python
Python 编程入门:打造你的第一个程序
【10月更文挑战第6天】编程,这个听起来高大上又充满神秘感的领域,其实就像学习骑自行车一样。一开始你可能会觉得难以掌握平衡,但一旦你学会了,就能自由地穿梭在广阔的道路上。本文将带你走进 Python 的世界,用最简单的方式让你体验编写代码的乐趣。不需要复杂的理论,我们将通过一个简单的例子——制作一个猜数字游戏,来实践学习。准备好了吗?让我们开始吧!
|
8天前
|
数据采集 开发框架 数据处理
探索Python的灵活性:简化日常编程任务
【10月更文挑战第7天】 【10月更文挑战第9天】 在本文中,我们将深入探讨Python编程语言的强大功能和灵活性。通过具体的代码示例,我们会展示如何利用Python简化日常编程任务,提高效率。无论是数据处理、自动化脚本还是Web开发,Python都能提供简洁而强大的解决方案。我们还将讨论一些最佳实践,帮助你编写更清晰、更高效的代码。
10 1