语句和语法

#  注释

\    转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用

;  将两个语句连接到一行,可读性差,不建议使用

:  将代码的头和体分开

语句(代码块)用缩进方式体现不同的代码级别,建议采用4个空格(不要使用tab),因为不同编程语言环境下tab所代表的空格数不一定是4

python文件以模块的方式组织,编写一个.py结尾的文件实际上就写了一个模块

变量的定义和赋值

a=:1为内存变量存放于内存中,a为变量的引用,python为动态语言,变量及其类型均无需事先声明类型

与C语言和C++的区别:a=1无返回值

注:.c语言变量声明必须位于代码最开始,而且要在所有语句之前

  .c++,java可以随时随地声明变量,但是必须声明变量名字和类型

  .python也可以随时随地声明变量,但是变量在被定义时,解释器会根据等式右侧的值来决定其类型

  .变量必须先赋值,才可使用

内存管理

内存管理

.变量无须指定类型

.程序员无须关心内存管理

.变量没有指向被赋予的值时会被自动回收

.del能够直接释放内存对象(减少对象的引用计数)

引用计数

增加引用计数

.对象被创建并将其引用赋值给变量,引用计数加1(例a=)

.同一个对象的引用又赋值给其它变量,引用计数加1(例b=a)

.对象作为参数被函数调用,引用计数加1(例int(a))

.对象成为容器对象中的一个元素,引用计数加1(例list_test=['bypp','z',a])

减少引用计数

.a作为被函数调用的参数,在函数运行结束后,包括a在内的所有局部变量均会被销毁,引用计数减1

.变量被赋值给另外一个对象,原对象引用计数减1(例b=,1这一内存对象的引用只剩a)

.使用del删除对象的引用,引用计数减1(例del a)

.a作为容器list_test中的一个元素,被清除,引用计数减少(例list_test.remove(a))

.容器本身被销毁(例del list_test)

自动回收机制(python独有的)

注意:python内存回收交给一段独立的代码即垃圾回收器(包含引用计数器和循环垃圾收集器),引用计数在归零时并不会立即清除(可能有循环调用)

   不必纠结循环引用收集,只需记住垃圾回收器帮你自动清理内存。

实例:

x= #创建内存变量1,将变量1的引用传给x,此刻1的引用计数为1
y=x #1的引用计数增加到2 y= #创建新的内存变量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程序编写简介的更多相关文章

  1. 第一章 Python程序语言简介

    第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...

  2. python程序编写中常见错误

    1,NameError语法错误 s还没定义,给s赋值就行了 2,IndexError 索引错误 对于列表l1来说,只有4个元素,所以l1的Index只能是0-3,当你所输入的Index不在这范围,就会 ...

  3. python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for

    也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算 ...

  4. 编写高质量代码--改善python程序的建议(六)

    原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修 ...

  5. 编写高质量代码--改善python程序的建议(八)

    原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax, ...

  6. 《编写高质量代码:改善Python程序的91个建议》读后感

    编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...

  7. 编写高质量代码改善python程序91个建议学习01

    编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...

  8. [原创]如何编写多个阻塞队列连接下的多生产者多消费者的Python程序

    平常在写程序时,往往会遇到一个需求:在程序的多个阶段都会出现阻塞的可能,因此,这多个阶段就需要并发执行. Python的多线程有一个特点,就是不允许从外部结束一个运行中的线程,这给我们编写代码时带来了 ...

  9. 编写python程序和运行.py文件的方法步骤

    前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...

随机推荐

  1. OkHttp官方中文文档

    https://blog.csdn.net/jackingzheng/article/details/51778793 https://www.cnblogs.com/ldq2016/p/879630 ...

  2. JavaScript常见的代码精简

    1.&& callback && callback() 等价于: if(callback){ callback(); } 表达的意思: 先判断 callback 是不是 ...

  3. 小程序https请求,http网站升到https

    最近开发小程序,因为以前只写过小程序的前端没注意接口,现在才发现原来所有的接口都必须使用https协议了,马上研究了一波,顺便也想给自己的博客升成https的. 申请免费证书 哈哈没办法就是喜欢免费的 ...

  4. 【rocketMQ】之centos6.9安装RocketMQ4.2

    基于最新的RocketMQ4.2版本,搭建2Master模式. 硬件环境:centos6.9_x64(两台虚拟机) IP1:192.168.150.128 IP2:192.168.150.129 1. ...

  5. PAT 甲级 1041 Be Unique (20 分)

    1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...

  6. 报错:Exception in thread "main" com.typesafe.config.ConfigException$UnresolvedSubstitution

    报错现象: 报错原因: pom文件中的jar包太高,可以降低jar包的版本号. 报错解决: 我将2.11换成了2.10,即可解决. <dependency> <groupId> ...

  7. Java访问Phoenix连接

    两种方法,一种是直接使用jdbc连接,一种是使用spring连接. jdbc连接和访问oracle步骤相同: ///////////// 测试Phoenix连接 /////////////// Str ...

  8. Git从远程clone项目报错cannot open git-upload-pack,将http.sslVerify设为false即可

    通过HTTPS访问Git远程仓库,如果服务器的SSL证书未经过第三方机构签署,那么Git就会报错 通过https访问Git远程仓库,如果服务器的SSL证书没有经过第三方机构签署,就会出现cannot ...

  9. import 搜索路径

    来源 http://www.runoob.com/python/python-mysql.html 搜索路径 当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在 ...

  10. 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本

    最近研究下java语言,根据一般使用的情况,写了个连接通讯服务的框架: 框架结构 C-Manager-S; 把所有通讯内容抽取成三个方法接口:GetData,SetData,带返还的Get; 所有数据 ...