对于多数从其他编程语言转入Python的来说,或多或少会有些不习惯。如果沿用其他编程语言的语法来写Python代码,那么碰壁是不可避免的了。

本文是基于我看了两个小时的官方文档(Python 2.7 : https://docs.python.org/2/tutorial/index.html , 至于我学习Python2.x的原因:工作需要),

从中提取的重要的细节,以避免再次踩坑。

先上一个Python文件(Foo.py):

#!python
# -*- coding: utf-8 -*- '''
python 的注释:
多行注释: 用成对的3个单引号或者3个双引号组成 (例如当前位置)
单行注释:使用#
''' # 定义一个foo函数,用于把指定msg打印 count次
"""
params:
count: int, 打印的次数
msg: string,消息内容
useFor:多次打印时,是否采用for loop。
raise:
ValueError : 当count<0时抛出
"""
def foo(count=1, msg='Hello'+' '+ "Foo", useFor=1):
if count < 0 :
raise ValueError('count < 0')
if useFor : # 0,1 可以用作bool判定
print("print use for, count = " + bytes(count) +" :")
for i in range(count): # range(N),会生成一个从0到N的list,恰好可以用作索引
print(msg+' '+bytes(i))
else:
print("print use while, count = " + bytes(count)+" :")
i = 0
while i < count:
print(msg+" "+bytes(i))
i+=1 # python中不支持 i++的写法,支持 i+= 的写法 if __name__ == '__main__' :
print('main in Foo.py')
foo(2,useFor=1)
foo(useFor=0, count=3);
foo(-1)

1、文件头

作为一个脚本语言,文件头指定一些执行环境等,是很常见的事情。在shell中就很常见的。

那么对于Python脚本,也有同样的内容:

1.1 指定解释器

脚本语言,很常见的配置:

#!/bin/sh           shell脚本
#!/usr/bin/perl perl脚本
#!/usr/bin/python python脚本
#!/usr/bin/python3 python3脚本
#!/usr/bin/python2 python2脚本 而有时不太清楚脚本解释器的具体全路径名;或者开发环境与运行环境的安装路径不同。为了保证兼容性,也可以写作:
#!/usr/bin/env python3
这样运行时会自动搜索脚本解释器的绝对路径。

1.2 指定文件编码

py文件的默认编码是ASCII,上面的脚本中很多都是ASCII不支持的,那么需要指定文件编码。格式是:

#-*- coding: encoding -*-

2、注释

python 的注释:

    多行注释: 用成对的3个单引号或者3个双引号组成 (例如当前位置)
单行注释:使用#

3、代码块,缩进

代码块:从上面的Foo.py文件中,很容易可以看出,代码块是以 冒号 : 开始的。不论是function定义,if,else,还是loop(for, while)

都是用 : 作为代码块的开始。不是用 { } 来包括代码块的。

缩进:Python的程序中,不是用 { } 来包括代码块的,用缩进来维持代码块的。不要写 tab,用4个空格为缩进。

4、基本数据类型

4.1 String

Python中的字符串与JavaScript中的字符串一样,既可以使用单引号,也可以使用双引号。

不会像Shell那样具备转义。如果需要对字符转义,使用 \ ,如果你不想要 字符串内部的 \ 代表转义,那需要在第一个引号前加上 r 。例如:

#!python
#-*- coding: utf-8 -*- '''
Python String,
1)表示字符串:用单引号或者双引号。他们是等价的,不存在取值转义等问题
2)字符串内的\表示转义
3)如果不希望字符串内的\表示转义,需要在字符串前加上 r 。
4)判定两个字符串是否相等,类似于JavaScript,用 == 即可
5)两个字符串拼接,使用 + 即可
6)String 与 Number 拼接,不能直接使用 +
'''
def testString():
a = 'aaa'
b = "aaa"
print(a==b)
print(a==b)
c = "\n"
d = r"\n"
print(c)
print(d)
print(c == d) if __name__ == '__main__' :
print('current module name is "' + __name__+'"')
testString()

4.2 Number

#!python
#-*- coding: utf-8 -*- '''
Python String,
1)对于数字,Python与JavaScript仍然是类似的,没有那么多的限制
2)可以在数字上直接进行 + - * / 运算
3)String 与 Number 拼接,不能直接使用 +
'''
def testNumber():
a = 1 # int
b = 1.0 # float
c = 1.1
print(a==b)
print(b<c)
print(a + (b - c * 3) / 2 )
d = ""
print(a == d)
print(bytes(1)+d)

4.3 Boolean

类似于JavaScript,Python的boolean也是多变的。

True, False 分别表示真、假

以下几种情况是false:
1.None
2.False
3.任何类型的数字0,包括0,0.0,0L,0j
4.空的序列(sequence)或者映射(mapping)类型对象
5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0

对于最后一条规则,有几点需要说明:
1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True
2.如果类同时定义了__nonzero__() 和 __len__(),只会参考__nonzero__()的返回值

以下几种情况是false:1.None2.False3.任何类型的数字0,包括0,0.0,0L,0j4.空的序列(sequence)或者映射(mapping)类型对象5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0
对于最后一条规则,有几点需要说明:1.如果类没有定义这两个方法中的任何一个,则这种类型的对象真值测试时总是为True2.如果类同时定义了__nonzero__() 和 __len__(),只会参考__nonzero__()的返回值

def testBoolean():
a = True
b = False
print(a!=b)
if(3):
print("3 is True") if __name__ == '__main__' :
print('current module name is "' + __name__+'"')
testBoolean()

5、 变量

Python中的变量,可以分为 local variable, global variable。

1)local variable 的作用与在一个代码块内部

2)global variable 的作用与在一个Python的module (一个 py文件) 内。它属于模块对象的。如果 A module 中定义了 一个global 变量 a, B module import 了 A, B仍然不能直接使用 A模块的global 变量 a(例如不能 print a),而应该通过 A.a来使用。

声明 global 变量需要使用 global 关键字,且有两步,先声明后赋值。

声明local 变量,不需要额外的关键字。

#!python
#-*- coding: utf-8 -*- '''
全局变量
'''
global moduleName
moduleName = __name__ a = 1
def printModuleName():
print(a+1)
print(__name__)
print(moduleName) '''
if __name__ == '__main__' :
print('current module name is "' + __name__+'"')
''' printModuleName()
print(a)

6、异常捕获与处理

Java中的try ... catch .. finally,在Python中也有类似的处理机制:try ... except ... else ... finally ...

7、参数 * 与 **

在Python中,可变参数用 *表示,本质是有个tuple。 keyworld参数用 **表示

Python 入门:基本语法的更多相关文章

  1. Python入门基本语法

      Python入门 以下主要讲述Python的一些基础语法,包含行的缩进在python中的重要意义,python中常见的保留字和引号的使用,如何实现单行注释和多行注释. print("he ...

  2. python入门-基础语法

    一.变量 定义字符串要加单引号‘’ 变量命名规范: 变量名只能是字母.数字或下划线的任意组合 变量名的第一个字符不能是数字 变量名不能用关键字 变量名不要用中文 变量名不要太长,区分大小写 面就用单引 ...

  3. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  4. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  5. Python基本语法[二],python入门到精通[四] (转)

    写在前面 python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 回到顶部 v正文开始:Python基本语法 1.定义常量: 之所以上篇博客介绍了定义变量没有一起介绍定义常量,是因为Pyt ...

  6. Python入门 语法

    Python入门 语法 语言介绍 对象,类型,值 编码规范  https://www.python.org/dev/peps/pep-0008/ 一.语言介绍 编程语言: 机器语言,汇编语言,高级语言 ...

  7. Python入门语法

    Python入门语法 动态变量 a=3  整数 a='abc'   a="abc"    字符串 a=3.0       小数 a=true  a=false   布尔型 a=3  ...

  8. Python学习系列(四)Python 入门语法规则2

    Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...

  9. Python入门篇-基础语法

    Python入门篇-基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编程基础 1>.程序 一组能让计算机识别和执行的指令. 程序 >.算法+ 数据结构= 程 ...

  10. Python入门2(Python与C语言语法的不同、Notepad++运行Python代码)

    本篇博客主要介绍Python的基本语法与C语言不同的地方 [不同] 一.Python代码需要有严格的缩进,即C语言中所谓的良好的编码习惯.缩进不正确就会报错. 二.C语言需要圆括号 三.C语言每个语句 ...

随机推荐

  1. 翻译:DECLARE Variable(已提交到MariaDB官方手册)

    本文为mariadb官方手册:DECLARE Variable的译文. 原文:https://mariadb.com/kb/en/library/declare-variable/我提交到MariaD ...

  2. 翻译:CREATE TRIGGER语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:CREATE TRIGGER的译文. 原文:https://mariadb.com/kb/en/create-trigger/我提交到MariaDB官方手册的译文:htt ...

  3. Bootstrap-table使用总结(整合版)

    一.什么是Bootstrap-table? 在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这 ...

  4. ABP适配Oracle全过程

    一.背景   ABP的各类文档在网络上已经非常完善了,唯独缺少与oralce相关的资料,ABP官网也未给出一个较好的Oracle解决方案.正好最近在学习ABP相关知识,对ABP源码结构稍算熟悉,花了些 ...

  5. spring boot 使用第三方jar的方法

    2018/02/02 更新 mvnrepository.com已经提供了ms jdbc 的jar URL: http://mvnrepository.com/artifact/com.microsof ...

  6. java集合框架-List集合ArrayList和LinkedList详解

    List 集合源码剖析 ✅ ArrayList 底层是基于数组,(数组在内存中分配连续的内存空间)是对数组的升级,长度是动态的. 数组默认长度是10,当添加数据超越当前数组长度时,就会进行扩容,扩容长 ...

  7. SQLite: sql script demo

    如果有成熟的架构,如何根据数据库关系的表.视图等,进行代码生成架构?减少写代码的时间? -- 考虑主键外键 -- create database geovindu; use geovindu; --2 ...

  8. Django下配置静态文件以及渲染图片

    js,css,img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在setting配置文件里面写上下面这些内容: #STATIC_URL = '/xxx/' #别名,随便写的名字, ...

  9. JS ES6中的箭头函数(Arrow Functions)使用

    转载这篇ES6的箭头函数方便自己查阅. ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 基础语法 (参数1, 参数2, …, 参数N) => ...

  10. 你用过CSS3的这个currentColor新属性吗?使用与兼容性

    currentColor顾名思意就是“当前颜色”,准确讲应该是“当前的文字颜色”,例如: .xxx { border: 1px solid currentColor; } currentColor表示 ...