Python基础(1)--Python编程习惯与特点
1.代码风格
在Python中,每行程序以换行符代表结束,如果一行程序太长的话,可以用“\”符号扩展到下一行。在python中以三引号(""")括起来的字符串,列表,元组和字典都能跨行使用。并且以小括号(...)、中括号[...]和大括号{...}包围的代码不用加“\”符也可扩展到多行。
在Python中是以缩进来区分程序功能块的,缩进的长度不受限制,但就一个功能块来讲,最好保持一致的缩进量。
如果一行中有多条语句,语句间要以分号(;)分隔。
以“#”号开头的内容为注释,python解释器会忽略该行内容。
在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。python中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。
在交互模式下运行python时,一个下划线字符(_)是特殊标识符,它保留了表达式的最后一个计算结果。
- >>> "hello"
- 'hello'
- >>> _
- 'hello'
- >>> 10+10
- 20
- >>> _
- 20
在python中,函数、类、模块定义的第一段代码如果是字符串的话,就把它叫作文件字串,可通过__doc__属性访问。如:
- def test():
- "this is a document string"
- return 100+1000
- >>>print test.__doc__
- this is a document string
2.保留字
- and elif global or yield
- assert else if pass
- break except import print
- class exec in raise
- continue finally is return
- def for lambda try
- del from not while
使用下面的代码可以打印python的关键字:
- >>> from keyword import kwlist
- >>> print kwlist
输出如下:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
3.Python运算符和表达式
Python运算符列表
运算符 | 描述 |
---|---|
x+y,x-y | 加、减,“+”号可重载为连接符 |
x*y,x**y,x/y,x%y | 相乘、求平方、相除、求余,“*”号可重载为重复,“%”号可重载为格式化 |
<,<=,>,>=,==,<>,!= | 比较运算符 |
+=,-=,*=,/=,%=,**=,<<=,>>=,&=,^=,|= | 自变运算符 |
x|y | 按位或 |
x^y | 按位异或 |
x&y | 按位与 |
~x | 按位取反 |
x<<,x>>y | x向左或向右移y位 |
is, is not | 等同测试 |
in, not in | 是否为成员测试 |
or,and,not | 逻辑运算符 |
x[i],x[i:j],x.y,x(...) | 索引,分片,限定引用,函数调用 |
(...),[...],{...},'...' | 元组,列表,字典,转化为字符串 |
运算符优先顺序列表(从最高到最低)
运算符 | 描述 |
---|---|
'expr' | 字符串转换 |
{key:expr,...} | 字典 |
[expr1,expr2...] | 列表 |
(expr1,expr2,...) | 元组 |
function(expr,...) | 函数调用 |
x[index:index] | 切片 |
x[index] | 下标索引取值 |
x.attribute | 属性引用 |
~x | 按位取反 |
+x,-x | 正,负 |
x**y | 幂 |
x*y,x/y,x%y | 乘,除,取模 |
x+y,x-y | 加,减 |
x<<y,x>>y | 移位 |
x&y | 按位与 |
x^y | 按位异或 |
x|y | 按位或 |
x<y,x<=y,x==y,x!=y,x>=y,x>y | 比较 |
x is y,x is not y | 等同测试 |
x in y,x not in y | 成员判断 |
not x | 逻辑否 |
x and y | 逻辑与 |
x or y | 逻辑或 |
lambda arg,...:expr | Lambda匿名函数 |
真值表
对象/常量 | 值 |
---|---|
"" | 假 |
"string" | 真 |
0 | 假 |
>=1 | 真 |
<=-1 | 真 |
()空元组 | 假 |
[]空列表 | 假 |
{}空字典 | 假 |
None | 假 |
复合表达式
对于and,当计算a and b时,python会计算a,如果a为假,则取a值,如果a为真,则python会计算b且整个表达式会取b值。如:
- >>> a,b=10,20
- >>> a and b #a is true
- 20
- >>> a,b=0,5 #a is false
- >>> a and b
- 0
- >>> a,b=10,20
对于or,当计算a or b时,python会计算a,如果a为真,则整个表达式取a值,如果a为假,表达式将取b值。如:
- >>> a,b=10,20
- >>> a or b
- 10
- >>> a,b=0,5
- >>> a or b
- 5
- >>> a,b=10,20
对于not,not将反转表表达式的“实际值”,如果表达式为真,not为返回假,如为表达式为假,not为返回真。如:
- >>> not 2
- False
- >>> not 0
- True
- >>> not "test"
- False
- >>> not ""
- True
- >>> not 2
4.给变量赋值
变量赋值:赋值并不是直接将一个值赋给一个变量,在Python中,对象是通过引用传递的。Python的赋值语句不会返回值,类似下面的语句是非法的:
- >>> x=1
- >>> y=(x=x+1)
- SyntaxError: invalid syntax
链式赋值没有问题:
- >>> x=1
- >>> y=x=x+1
- >>> x,y
- (2, 2)
Python不支持类似x++或--x这样的前置/后置自增/自减运算
可以多重复值:
- >>> x=y=z=1
- >>> x
- 1
- >>> y
- 1
- >>> z
- 1
可以多元赋值:
- >>> x,y,z=1,2,'a string'
- >>> x
- 1
- >>> y
- 2
- >>> z
- 'a string'
通常使用小括号括起来,增强代码的可读性:
- >>> (x,y,z)=(1,2,'a string')
- >>> x
- 1
- >>> y
- 2
- >>> z
- 'a string'
使用Python的多元赋值方式可以实现无中间变量交换两变量的值:
- >>> #swapping variables in Python
- >>> x,y=1,2
- >>> x
- 1
- >>> y
- 2
- >>> x,y=y,x
- >>> x
- 2
- >>> y
- 1
Python基础(1)--Python编程习惯与特点的更多相关文章
- Python基础:函数式编程
一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...
- Python 基础之socket编程(二)
Python 基础之socket编程(二) 昨天只是对socket编程做了简单的介绍,只是把socket通信的框架搭建起来,要对其中的功能进行进一步的扩充,就来看看今天的料哈! 一.基于tcp的套接字 ...
- python基础之socket编程 (转自林海峰老师)
python基础之socket编程 阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...
- Python 基础之socket编程(三)
python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友 ...
- Python 基础之socket编程(一)
Python 基础之socket编程(一) 可以进行通信玩儿了,感觉不错不错,网络通信就像打电话,我说一句你听一句之后,你再说一句,我听一句,就这样.....下去了.不扯淡了,来来来,看看今天都搞了点 ...
- 二十一. Python基础(21)--Python基础(21)
二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性: #类.属性: 调用的就是类中的属性 #对象.属性: 先从自己的内存空间里找名 ...
- Day7 - Python基础7 面向对象编程进阶
Python之路,Day7 - 面向对象编程进阶 本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...
- Python基础7 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- python基础实践 -python是一门动态解释性的强类型定义语言
python是一门动态解释性的强类型定义语言 Python能做什么? Python是一门综合性的语言,你几乎能在计算机上通过Python做任何事情,以下是Python应该最广泛的几个方面: 1.网络应 ...
随机推荐
- java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放
一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...
- [python]python元类
这两天在看Django框架,里面的filter实现原理搞不明白,最后发现跟python的元类有关系. 原文:http://stackoverflow.com/questions/100003/what ...
- HTML的学习
PS:最近已经进入实验室了,已经算是正式的成为其中的核心成员了,虽然自己学习的并不多.但是 相信自己通过努力能够走的越来越好.条件还是蛮不错的.这次给了一个关于WEB的项目,自己的还是 没有学完JAV ...
- js-初步了解
一.javascript的由来 Javascript是一种web技术,最初起名叫LiveScript,它是Netscape开发出来一种脚本语言,其目的是为了扩展基本的Html的功能,用来替代复杂的CG ...
- js-数据类型
js中有5种数据类型:Undefined.Null.Boolean.Number和String.还有一种复杂的数据类型Object,Object本质是一组无序的名值对组成的. 一.数据类型 1.und ...
- dock基本使用
通过Docker源安装最新版本通过Docker源安装最新版本 要安装最新的 Docker 版本,首先需要安装 apt-transport-https 支持,之后通过添加源来安装.要安装最新的 Dock ...
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)
实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624 ...
- BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析
上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...
- csharp: Export or Import excel using MyXls,Spire.Xls
excel 2003 (效果不太理想) using System; using System.Collections.Generic; using System.ComponentModel; usi ...
- 最小生成树Kruskal算法(邻接矩阵和邻接表)
最小生成树,克鲁斯卡尔算法. 算法简述: 将每个顶点看成一个图. 在所有图中找权值最小的边.将这条边的两个图连成一个图, 重复上一步.直到只剩一个图. 注:将abcdef每个顶点看成一个图.将最小权值 ...