python基础知识2---核心风格
阅读目录
- 一.语句和语法
- 二.变量定义与赋值
- 三.内存管理
- 内存管理:
- 引用计数:
- 简单例子
- 四.python对象
- 五.标识符
- 六.专用下划线标识符
- 七.编写模块基本风格
- 八.示范
一.语句和语法
#:注释
- \:转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用
- ;:将两个语句连接到一行,可读性差,不建议使用
- ::将代码的头和体分开
- 语句(代码块)用缩进方式体现不同的代码级别,建议采用4个空格(不要使用tab)
- python文件以模块的方式组织,编写一个.py结尾的文件实际上就写了一个模块
二.变量定义与赋值
- a=1:1为内存变量存放于内存中,a为变量的引用,python为动态语言,变量及其类型均无需事先声明类型
- 与c的区别:a=1无返回值
注:
- c语言变量声明必须位于代码最开始,而且要在所有语句之前
- c++,java可以随时随地声明变量,但是必须声明变量名字和类型
- python也可以随时随地声明变量,但是变量在被定义时,解释器会根据等式右侧的值来决定其类型
- 变量必须先赋值,才可使用
三.内存管理
内存管理:
- 变量无须指定类型
- 程序员无须关心内存管理
- 变量会被自动回收
- del能够直接释放内存对象(减少对象的引用计数)
引用计数:
- 增加引用计数
- 对象被创建并将其引用赋值给变量,引用计数加1(例a=1)
- 同一个对象的引用又赋值给其它变量,引用计数加1(例b=a)
- 对象作为参数被函数调用,引用计数加1(例int(a)
- 对象成为容器对象中的一个元素,引用计数加1(例list_test=['alex','z',a])
- 减少引用计数
- a作为被函数调用的参数,在函数运行结束后,包括a在内的所有局部变量均会被销毁,引用计数减1
- 变量被赋值给另外一个对象,原对象引用计数减1(例b=2,1这一内存对象的引用只剩a)
- 使用del删除对象的引用,引用计数减1(例del a)
- a作为容器list_test中的一个元素,被清除,引用计数减少(例list_test.remove(a))
- 容器本身被销毁(例del list_test)
注意:python内存回收交给一段独立的代码即垃圾回收器(包含引用计数器和循环垃圾收集器),引用计数在归零时并不会立即清除(可能有循环调用)
不必纠结循环引用收集,只需记住垃圾回收器帮你自动清理内存。
简单例子
x=1 #创建内存变量1,将变量1的引用传给x,此刻1的引用计数为1
y=x #1的引用计数增加到2 y=2 #创建新的内存变量2,将变量2的引用传给y,原本指向1的y,此刻给了2,所以1的引用计数减少到了1 del x #删除了内存对象1的引用x,此刻1再无引用,此刻它就成了python解释器回收的目标
四.python对象
python中使用对象模型来存储数据,用来生成数据类型的工厂函数本质上是类,新建数据的结果本质是实例化一个对象
对象有三种特性
- 身份:内存地址,可以用id()确认,id相同的就是同一个对象
- 类型:可以用type()查看,返回值的type也是对象
- 值
五.标识符
定义:允许作为名字的有效字符串集合
- 名字必须有实际意义,可读性好
- 首字母必须是字母或下划线(_)
- 剩下的字符可以是字母和数字或者下划线
- 大小写敏感
- 两种风格:conn_obj或ConnObj
- 不能使用关键字,不能使用内建
关键字表:
内建:由解释器自动导入(提供基本功能),可以看作全局变量,
六.专用下划线标识符
- _xxx:不能用from module import *导入
- __xxx__:系统定义名字
- __xxx:类中私有变量
下划线对于解释器来说有特殊意义,而且是内建标识符所使用符号,不建议自定义变量以下划线开头
但是如果是类中的私有变量,__xxx将会是一个好习惯
补充:
- 系统变量__name__会根据python文件被加载方式的不同得出不同的值
- python文件被当作模块导入:__name__=模块名或者文件名
- python文件被执行:__name__='__main__'
在我们使用python编写一个软件时,应该只有一个主程序中包含大量顶级代码(就是没有缩进的代码,
python解释器读取到顶级代码会立即执行),其他.py文件应该只有少量顶级代码,所有功能都应该封装
在函数或类中
- 通常在文件结尾结合__name__变量,编写测试代码
七.编写模块基本风格
- 标题
- 文档注释
- 模块导入
- 变量定义
- 类定义语句
- 函数定义语句
- 主程序
- 测试代码
八.示范
#_*_coding:utf-8_*_
#!/usr/bin/env python '''
This is an example module
''' import sys,os debug=True class Test:
'''
test class
'''
pass def main():
'''
test func
:return:
'''
pass if __name__ == '__main__':
main()
python基础知识2---核心风格的更多相关文章
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- python基础知识讲解——@classmethod和@staticmethod的作用
python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python基础知识(五)
# -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...
随机推荐
- C 设计模式:装饰模式
最近在公司分享了下C语言版的设计模式,记录一下吧. 参考:<设计模式之禅>中“装饰模式”章节. 上面书中是用C++来实现的,我使用了书中的例子,改用C语言来实现. 一.基础知识 面向对象最 ...
- 原生JS和jQuery操作DOM的区别小结
一.Js原生对象和jQuery实例对象的相互转化: (1).原生JS对象转JQ对象: $(DOM对象); (2). JQ对象转原生JS对象: $(DOM对象).get(index); //注意区分eq ...
- Hadoop学习------Hadoop安装方式之(二):伪分布部署
要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模式是指Hadoop在单个节点上以单个进程的方式运行,伪分布模式是指在单个节点上运行NameNode.DataN ...
- ng2 配置端口号
ng2 默认端口号4200 若要配置,用两种方法 (1)可以使用以下命令 ng server --port 4201 (2)找到node_modules/angular-cli/lib/confi ...
- 【原创项目】GC Server 更新
GC Server 是自己2年前开坑的一个项目,主要是为coder提供方便,内含轻便编译器(不含代码编辑器,就是你把.c/.cpp代码文件放到指定目录下然后打开程序编译),还有各种各样的有助于提升智力 ...
- python基础---列表生成器、迭代器等
一.列表生成式 用来创建list的表达式,相当于for循环的简写形式 语法: [表达式 for循环 判断条件] ''' 普通写法 ''' def test(): l= [] for i in rang ...
- 事务的ACID特性(转)
ACID特性 数据库中的事务(Transaction)有四个特性,分别是:原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability) ...
- Api文件
对于我们不认识的类(只限于java自带的类),我们可以百度去查一下,但是这样是嚼别人吃剩下的骨头,我们可以去查java的api文件,虽然都是英语,但是还是硬着头皮看吧,加油! 链接:https://p ...
- 并发编程心得--synchronized
根据业务需求解决并完善并发问题-- IWMS仓库系统不考虑并发那么大的情况下,我想到的有2种并发解决方案. 1.在同时请求时,给需要操作的保存接口添加synchronized 同步方式,同步保存方法, ...
- C#实现按键计算器功能2(增强版)
1. 实验目的 ( 1)熟悉C#语言的使用和语法知识 2. 实验要求 (1)设计简单的含交互界面的计算器软件,具有较强的用户体验感. (2)使用C#语言进行编程,创建窗体应用程序. (3)实 ...