近些年python语言非常流行,许多开发者都会学习一些python相关知识,本文为大家整理了python的一些基础知识,希望对大家有一定的帮助。

注:下文Python代指Python3。

基本信息和Javascript一样,面向对象、解释型、动态数据类型

一切皆为对象(Object),包含原始数据类型也由内置构造函数创建,高阶对象为Object

单行注释使用#标识,多行注释同多行字符串

靠缩进约束逻辑分支,无大括号等多余运算符

支持多行单语句、单行多语句

变量无需声明,必须赋值才会正式声明

有自己的模块系统

文件以.py结尾。

基本构成

Python中一切皆对象,数字、字符串、元组、列表、字典、函数、方法、类、模块等等都是对象。

不同的编程语言以不同的方式定义"对象”。 某些语言中,它意味着所有对象必须有属性和方法;另一些语言中,它意味着所有的对象都可以子类化。

在Python中,定义是松散的,某些对象既没有属性也没有方法,而且不是所有的对象都可以子类化。 简单可以解释为:Python 中的一切都可以赋值给变量或者作为参数传递给函数。

所有对象都有三个共同特征:身份:即对象数据(非变量)在内存中的唯一id,可以通过函数id(obj)得到

类型:对象的类型决定了对象可以保存什么类型的值,有哪些属性和方法,可以进行哪些操作,遵循怎样的规则。可以使用内建函数type()来查看对象的类型

值:对象所表示的数据

大部分 Python 对象有属性、值或方法,使用句点.标记法来访问属性。 最常见的属性是函数和方法,一些 Python 对象也有数据属性,如:类、模块、文件等。

数据存储

字符串、数字数据在内存中均为引用类型,即栈内存保存数据本身,堆内存维护一个变量池,如下实例:# 开辟内存存储数据'hello',并创建变量a,并将a的指针指向此数据

a = 'hello'

# 开辟内存存储数据'world',并更改变量a的指针,销毁数据'hello'

a = 'world'

# 开辟内存存储数据"hello world!",并同时创建三个变量,将三个变量的指针同时指向此数据

b = c = d = "hello world!"

# 多个变量赋值,同上,分别先后对应

e, f, g = 1, 2, 'python'

实际上变量a在首次声明并赋值时,栈区开辟内存存储'hello'字符串, a再次赋值时,栈区重新开辟内存存储数据'world'字符串,同时将变量a的指针指向数据'world',销毁数据'hello'。

其他数据类型,类似;如列表、字典:a = [1,2,3,4]

# 变量a的指针不改变

a[0] = 5

# 变量a的指针改变

a = [2,3,4,5]

变量a更改列表子数据时,列表本身的指针和位置不会改变,但将a本身重新赋值时,则同上:原列表数据销毁、指针指向新列表数据。

Python中支持删除变量对对象的引用,使用del语句,如下:a = 10

b = 20

c = 30

d = [1,2,3,4]

del a

del b, c

del d[0]

对象比较== 操作符用于测试两个被引用的对象的值是否相等

is 用于比较两个被引用的对象是否是同一个对象

类型比较type(obj)判断数据类型

isinstance(object, classinfo)判断实例是否属于某类

缓存和内存回收机制

缓存机制

Python 缓存了某些不变的对象对其进行复用,而不是每次创建新的对象。 在 Python 中变量都是指向某一对象的引用,当多个变量都引用了相同的对象,称为共享引用。

如下代码:# 由于变量仅是对对象数据的一个引用,因此改变 a 并不会导致 b 的变化

a = 1

b = a

a = 0

print(a) # 0

print(b) # 1

# 对

a = [1, 2, 3]

b = a

a[0] = 0

print(a) # [0, 2, 3]

print(b) # [0, 2, 3]

内存回收机制

每一个对象有两个标准的头部信息:类型标识符:标识对象数据类型

引用的计数器:用于决定是否需要对对象进行回收

计数器记录了当前指向该对象引用的数目,一旦对象的计数器为 0 ,即不存在对该对象的引用,则这个对象的内存空间会被回收,和Javascript中基本一致, 可以通过sys模块中的getrefcount()函数查询一个对象计数器的值。import sys

sys.getrefcount(1)

# 实测python的编译过程和打印乃至getrefcount这个函数本身都会对目标对象造成多余的引用计数

数据类型

数字 Numbers

三种类型:int:整型 int(num)

float:浮点型 float(num)

complex:复数型 complex(a, b)

运算相关:数学常量...

数学函数...

随机数函数...

三角函数...

字符串 String

方法:str()包含一堆内建函数

三种符号表示方式(三引号保持原有格式):'str'

"str"

'''str'''

"""str"""

两种操作/读取方式:下标:str[0]

中括号:str[:]

示例:var1 = 'Hello World!'

print ("已更新字符串 : ", var1[:6] + 'Surmon!')

# 已更新字符串 : Hello Surmon!

列表 List

简单说:类似数组,可嵌套,可作为堆栈使用

基本格式:['str', 1, ['hello']],拥有各种类似数组操作的方法,访问方式可使用下标、中括号[index:index]。

元组 Tuple

简单说:类似列表,但只读。

基本格式:('', ''),和列表类似,拥有只读特性,可拼接,拥有基本操作方法。

集合 Sets

简单说:是一个无序不重复元素的序列

基本格式:{ }字面量 或 set()方法,创建一个空集合必须用set()而不是{ }字面量,因为{ }字面量是用来创建一个空字典。

复杂说:类似于数学中的集合,可以进行成员关系测试(交、差、并、补集),还可以用来去重。

BTW:类似于Jvascript中的Set数据结构。

字典 Dictionary

简单说:就是对象

与Javascript并无太大异样,多了一些方法,和一些方法名称的不同,仅可通过obj[key]访问成员。

迭代器和生成器

就是Javascript中的Generator和yield,一句话的话就是:交出函数(运算)的执行权,即暂停执行。

两个参考链接:

函数

普通函数基本没区别,区别的地方: 函数形参可以加一个*将函数所有不固定参数合并在一个元组,若参数为空,则返回一个空元组。

和Jvascript比的话,就是ES5中的构造函数,ES6中的class。

它用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。

对象是类的实例。就是面向对象啦,上下文不再是this,而是类函数中的首参(一般定义为self)。

类的专有方法:__init__: 构造函数,在生成对象时调用(对应ES6中的constructor)

__del__ : 析构函数,释放对象时使用

__repr__: 打印,转换

__setitem__ : 按照索引赋值

__getitem__: 按照索引获取值

__len__: 获得长度

__cmp__: 比较运算

__call__: 函数调用

__add__: 加运算

__sub__: 减运算

__mul__: 乘运算

__div__: 除运算

__mod__: 求余运算

__pow__: 称方

包和模块

Python中,包为最大内聚单位,当然它只是抽象的,它可能是个文件夹或是其他whatever,他的意义就是更好地管理模块的命名空间。

假设现在有个模块的名称是A.B, 那么他表示一个包A中的子模块B。 就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用package.moduleName这种形式也不用担心不同库之间的模块重名的情况。

Python中以文件为模块单位,模块中又可以区分不同的类、方法、对象或任何其他数据,和Node.js中的模块大同小异。

核心语句:import ...

from ... import ...

核心对象和模块File:对文件的操作

OS:处理文件和目录

json:对json数据的处理

时间:time、calendar

多线程

多线程类似于同时执行多个不同程序,多线程运行有很多优点。

线程分为:内核线程:由操作系统内核创建和撤销

用户线程:不需要内核支持而在用户程序中实现的线程

Python3中线程相关的两个模块:_thread(原thread,已废弃)

threading

一般可以使用函数或者用类来包装线程对象。

本文转自:https://surmon.me/article/39

python基础知识-python基础知识整理(值得收藏)相关推荐

  1. 成中文自学python编程免费教程_自学python编程语言都有哪些免费网站值得收藏?...

    python是未来人工智能最好的编程语言,很多程序员在有其她编程基础的情况选择学习python是比较容易的,当然现在很多想进入编程界的新手选择python开始接触学习编程,但是由于经费有限,只能选择最 ...

  2. python写520_用Python做一个520表白神器,值得收藏

    本文最后给出了打包好的软件,无需安装Python环境和各种依赖,直接下载软件,解压后,双击exe文件即可使用. 先来看一下具体的效果. 运行程序. 用Python做一个520表白神器,值得收藏 点击「 ...

  3. 牛笔了!字节跳动大佬整理:CSS 核心知识(万字长文,值得收藏!)

    本篇文章围绕了 CSS 的核心知识点和项目中常见的需求来展开.虽然行文偏长,但较基础,适合初级中级前端阅读,阅读的时候请适当跳过已经掌握的部分. 这篇文章断断续续写了比较久,也参考了许多优秀的文章,但 ...

  4. 用心整理值得收藏的30道Python练手题(附详细答案)

    1.已知一个字符串为"hello_world_yoyo",如何得到一个队列["hello" ,"world","yoyo" ...

  5. 硬件开发:嵌入式系统知识和接口技术(值得收藏)

    1.什么是嵌入式 IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:"用于控制.监视 ...

  6. 零基础学Java的书籍,值得收藏

    由于Java教程的书籍比较多,不少Java小白在学习的过程中对于学习Java看什么书感到很困惑.下面我们就来了解一下到底学Java应该看什么书吧. 经过初中高级Java程序员的访问和调查,得出了最受J ...

  7. python制作表白神器_用Python做一个520表白神器,值得收藏

    本文最后给出了打包好的软件,无需安装Python环境和各种依赖,直接下载软件,解压后,双击exe文件即可使用. 先来看一下具体的效果. 运行程序. 点击「选择图片」 选择JPG/JPGE/PNG三种中 ...

  8. python 情书_用Python做一个520表白神器,值得收藏(示例代码)

    本文最后给出了打包好的软件,无需安装Python环境和各种依赖,直接下载软件,解压后,双击exe文件即可使用. 先来看一下具体的效果. 运行程序. 点击「选择图片」 选择JPG/JPGE/PNG三种中 ...

  9. 推荐|45个值得收藏的Python优质资源(附链接)

    热门资源博客 Mybridge AI 比较了18000个关于Python的项目,并从中精选出45个最具竞争力的项目.我们进行了翻译,在此一并送上. 这份清单中包括了各不相同的20个主题,以及一些资深程 ...

  10. python入门基础知识实例-Python入门基础知识实例,值得收藏!

    7月的编程语言指数榜已经发布,Python 在今年5月首次超越 Java 拿下榜首位置后,仍保持上涨趋势,正逐渐与 Java 拉开差距.(图为与去年 7 月数据对比) 上周为大家简单介绍了如何安装Py ...

最新文章

  1. websockets_如何将WebSockets与AWS API Gateway和Lambda一起使用来构建实时应用程序
  2. 内江将被打造成四川物联网西部副中心
  3. ASIC设计的一些软件
  4. 九. Python基础(9)--命名空间, 作用域
  5. string的反转输出以及char型字符串的反转输出
  6. php 返回的缓存数据,基于PHP输出缓存(output_buffering)的深入理解
  7. Java读取Level-1行情dbf文件极致优化(2)
  8. screw-plus实现php代码安全
  9. 后缀树(Suffix tree)
  10. 分解例题_2020年中考数学考点之利用平方差公式进行因式分解习题练习
  11. Atitit 组织软资产建设 知识管理 经济学架构体系
  12. sxssfworkbook 设置单元格大小_Offset属性和Resize属性相结合,完美实现选择区域大小的改变...
  13. python垃圾回收机制与很多_你了解Python的 垃圾回收 机制吗?
  14. python自回归_自回归模型(AR )
  15. sql2008服务器运行哪个,SQL SERVER 2008R2 暂用服务器内存直到服务器死机。
  16. HTML 和 CSS 重构网页 (Steam主页)
  17. rk3288 android 6.0固件,Firefly-RK3288主板烧写官方Android固件起不来
  18. 启鸿蒙什么意思,鸿蒙是什么?大多数人可能都理解错了
  19. java.lang maven_maven 项目出现 java.lang.ClassNotFoundException
  20. 文件丢失怎么找回来?恢复文件的方法

热门文章

  1. python基础操作---string
  2. SQL语句和EF Group by 用法
  3. Educational Codeforces Round 62(CF1140)
  4. Django中Celery简介
  5. 521. Longest Uncommon Subsequence I - LeetCode
  6. Await Async和Thread.waitAll想法?未完待续
  7. computed 计算选项
  8. Intel微处理器列表_百度百科
  9. HDU2015 偶数求和【入门】
  10. HDU3789 奥运排序问题【序列处理】