基础语法

标识符

所谓的标识符就是对变量、常量、函数、类等对象起的名字。

首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不同

python对于表示标识符的命名有如下规定:

第一个字符必须是字符表中的字符或者下划线

例如,a,abc,_id,等都是可以的。但是例如$a(以$开头的是PHP的变量语法),~abc,123a都是不可以的。这一点一定要注意。

可能有人会问,中文可以作为标识符嘛?答案是可以的

我 = "json",打印出‘我’ 结果是json

虽然可以但是不建议大家这样做。

另外,以下划线开头的标识符通常都有特殊意义。以单下划线开头的变量,例如_foo代表禁止外部访问的类成员,需通过类提供的接口进行访问,不能用"from xxx import *"导入。而以双下划线开头的,例如__foo,代表类的私有成员 以双下划线开头和结尾的__foo__是python里特殊方法专用的标识。如__init__代表类的构造函数。这些我们后面会专门的讨论这里不做过多的解释。

标识符的其他的部分由字母、数字和下划线组成

标识符除了首字符不可以是数字外,其他部分还可以包含数字。这里需要注意特殊字符是不可以的。例如:

a123b,bbc,a_b_c_1这些都是可以的。但是a&b,a-b-c这些都是不可以的。

另外要注意的是,由于l(小写的L)和数字1, 大小写的o与数字0在外观上的相似性,请尽量不要让它们相邻出现,保持语义的清晰性,确保不会发现错误认读的情况。

同样,英文中夹塞中文在语法上也是可以的,但绝对不要这么做!

a这都能行b就服你 = 100
a这都能行b就服你
100

标识符对大小写敏感

刚刚上面也给大家说过了,标识符ab和AB是完全不同的两个标识符

变量名全部小写,常量名全部大写

这条不能算语法层面的要求,而是代码规范的要求。

可以用PI来表示一个变量,但通常我们都会认为这是代表圆周率的一个常量

函数和方法名用小写加下划线

这算是一个代码的规范,我们在定义一个方法的时候。尽量用get_images,count_apple之类的命名方式。当然也可以采用小驼峰的方式,getImages,countApple这种。

类名用大驼峰

同样也是代码规范,例如ThreadMinxIn,ButtonClick这种。就是每个单词的首字母大写,组合在一起就像是驼峰一样高低排列。

模块和包的名字用小写

请尽量小写模块和包的名字,并且不要和标准库以及著名的第三方库同名。如果同名程序运行会报错。

最后提醒大家,变量的命名不要用关键字和内置函数的名称!!

python保留字

Python保留字,也叫关键字,是Python语言官方确定的用作语法功能的专用标识符,不能把它们用作任何自定义标识符名称。关键字只包含小写字母。可以通过python提供的库输出这些关键字

Python的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字

import keyword
keyword.kwlist

如果真的用关键字来当做变量,会怎么样呢?

系统会直接提示语法错误,所以这里一定要注意不要用关键字来当做变量。除了不能使用关键字作为标识符,内置的函数同样也是不可以的。sum是一个求和的函数。这里我给它定义成一个字符串看看会有什么结果?

注释

我们写的程序里,不光有代码,还要有很多注释。注释有说明性质的、帮助性质的,它们在代码执行过程中相当于不存在,透明的。

单行注释

Python中,以符号“#”为单行注释的开始,从它往后到本行的末尾,都是注释内容。

# 单行注释

多行注释

Python没有真正意义上的多行注释(块注释)语法

#第一行注释

#第二行注释

#第三行注释

注释文档

在某些特定的位置,用三引号包括起来的部分,也被当做注释。

"""
这个是函数的说明文档。
:param a: 加数
:param b: 加数
:return: 和
"""

代码头两行

很多时候,我们在一些py脚本文件的开头都能看到类似的以#开头的这样两行代码,它们不是注释,是一些设定

#!/usr/bin/env python
# -*- coding:utf-8 -*-

第一行:用于指定运行该脚本的Python解释器,Linux专用,windows不需要。env方式下,系统会自动使用环境变量里指向的Python。还有一种方式,#!/usr/bin/python3.6,这会强制要求使用系统中的python3.6解释器执行文件,这种方式不好,一旦你本地的Python3.6版本删除了,会出现找不到解释器的错误。无论两种方式的哪一种,都指的是在linux下使用

第二行:代码的编码方式。不是程序要处理的数据的编码方式,而是程序自己本身的字符编码。在Python3中,全面支持Unicode,默认以UTF-8编码,我们不用再纠结中文的问题,乱码的问题,所以本行其实可以不需要。但在Python2中,对字符的编码是个非常令人头疼的问题,通常都需要指定这么一行。如果要自定义别的编码类型的话,可以像这样:# -- coding: cp-1252 --,但如果没有强制需求的话,不要自己作死,请坚持使用utf-8编码。

这里的-*-是什么意思呢?没意思,装饰美观好看而已

语句与缩进

语句:在代码中,能够完整表达某个意思、操作或者逻辑的最短代码,被称为语句。

a = 321
a = 321
print("hello world")
list.append(item)

这里强调一下,python的标准语言不需要使用分号。简单的换行就表示语句已经结束。

代码块:为完成某一特定功能而联系在一起的一组语句构成一个代码块。有判断、循环、函数、类等各种代码块。代码块的首行通常以关键字开始,以冒号( : )结束。比如:

if expression:
pass
elif expression :
pass
else:
pass

Python最具特色的语法就是使用缩进来表示代码块,不需要使用大括号

像PHP、JAVA等语言都是使用({})来表示代码块的。python一般用四个空格就是tab来缩进。在pycharm中tab自动回转成4个空格。在Linux环境中,如VIM编辑器,建议使用空格。

那么怎么才是正确的缩进方式呢?

1.所有的普通语句,顶左开始编写,不需要缩进

2.所有的语句块,首行不用缩进,从冒号结束后开始下一行,都要缩进

3.直到该语句块结束,就退回缩进,表示当前块已结束

4.语句块可以嵌套,所以缩进也可以嵌套

多行语句: 前面是多条语句在一行,但如果一条语句实在太长,也是可以占用多行的,可以使用反斜杠()来实现多行语句

string = "i love this country,"\
+"because it is very beautiful!"\

不到迫不得已,不要使用这种,该换行就换行。

pass语句

pass语句是占位语句,它什么都不做,只是为了保证语法的正确性而写。以下场景中,可以使用pass语句:

当你不知道后面的代码怎么写的时候

当你不需要写代码细节的时候

当语法必须,又没有实际内容可写的时候

其它的一些你觉得需要的场景

def func(a,b):
pass

字符串的表示形式

在后面的章节中,会进行更深入的介绍,这里作为一个前期的知识铺垫。

abc可能是个变量,但是"abc"肯定是个字符串了。这里强调一下在编程语言中,所有的符号都是英文状态下的。

在python中单引号和双引号的作用完全相同。在其他语言中,单双引号还是有一定区别的。

原生字符串: 通过在字符串前加r或R,如 r"this is test \n",表示这个字符串里的斜杠不需要转义,等同于自身

Python基础-1 基础语法的更多相关文章

  1. Python:笔记(1)——基础语法

    Python:笔记(1)——基础语法 我很抱歉有半年没有在博客园写过笔记了,客观因素有一些,但主观原因居多,再多的谴责和批判也都于事无补,我们能做的就是重振旗鼓,继续出发! ——写在Python之前 ...

  2. Python入门篇-基础语法

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

  3. Python VS PHP 基础语法

    这几天在学习Python,鄙人平时学习中为了方便记忆和更好的比较与理解语言二者之间在某些情况的优劣性,所以花了点时间,整理了一下 Python 和 PHP 常用语法的一些区别. 一.大小写 PHP: ...

  4. 给深度学习入门者的Python快速教程 - 基础篇

    实在搞不定博客园的排版,排版更佳的版本在: https://zhuanlan.zhihu.com/p/24162430 Life is short, you need Python 人生苦短,我用Py ...

  5. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级

    前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...

  6. Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式

    目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...

  7. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  8. Python之路,第一篇:Python入门与基础

    第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...

  9. [转]python与numpy基础

    来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...

  10. 给深度学习入门者的Python快速教程 - 基础篇(转)

    原文:https://zhuanlan.zhihu.com/p/24162430 5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5. ...

随机推荐

  1. nodejs的req取参req.body,req.params,req.query

    1/req.query: Get:/domo?name=ximiximi&blog=https://home.cnblogs.com/u/ximiximi-blog/ app.get('/do ...

  2. properties文件读写工具类PropertiesUtil.java

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  3. Python中,关于调用带参函数,一些需要注意的问题(监听时)

    1.如果监听调用的函数不带参数(start()) Button.clicked.connect(start)) def strat(): ... 2.如果监听调用的函数带参数(start(x,y)) ...

  4. 清华大学慕课 (mooc) 数据结构-邓俊辉-讲义-合并版

    邓公的数据结构一直好评如潮,可惜我如今才开始学习它.QAQ 昨天,<数据结构 (2020 春)>的讲义已经推到清华大学云盘上了.苦于 10 拼页的打印版不易在 PC 上阅读(手机上更是如此 ...

  5. 继承QWidget后无法使用QSS

    使用继承QWidget后的类对象时,如果设置styleSheet看不到效果, 需要重写 void paintEvent(QPaintEvent *event); 方法, 在重写的方法中加入如下代码即可 ...

  6. Github Pull Request的提出与采纳

    这一文来简要介绍一下Github Pull Request(以下简称PR)的使用方法: 作为PR的提出者,如何对某个仓库提交PR,如何根据仓库管理者对所提交PR的反馈对PR进行完善 作为PR的接收者, ...

  7. JS高级---体会面向对象和面向过程的编程思想

    体会面向对象和面向过程的编程思想 ChangeStyle是自定义的构造函数,再通过原型添加方法的函数. 实例化对象,导入json参数,和创建cs,调用原型添加的方法函数 过渡,先熟悉记忆 <!D ...

  8. python中的基本类型

    字符串类型 字符串相当于羊肉串,而字符串就是一串被串起来的字符,在单引号.双引号或三引号内包裹一串字符.需要注意的是:三引号内的字符串可以换行,而单引号内的字符不行 name='anny' name= ...

  9. ES6-形参默认值

    在定义一个函数的时候,我们定义了几个函数的参数,但是在调用的时候我们可能并没有传入足够的参数,那么未被满足的参数的值就是undefined,在ES6中如果有这种情况我们可以给形参一个默认值,如果该形参 ...

  10. BugReport-智慧农业APP

    1.展示的界面显示不全 bug Description: 测试环境:win10.工具eclipse: 测试步骤:打开运行程序后模拟器启动,第一个界面显示过几秒跳到了另一个界面,问题是第一个界面显示不全 ...