【Python基础】_2 Python基本语法与常识(迭代优化中...)
2 Python的基本语法
为了保证Python解释器能顺利编译所编写的代码,也为了程序员对自己和别人所编写的程序易于阅读、维护,对编程语言的语法做一些基本约定是非常必要的。
2.1 编程方式
2.1.1 交互式编程(python)
交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。(在DOS环境中输入Python,可以看到Python的版本信息,>>>后输入print(“hello,world”)就可以看到输出hello,world)
2.1.2 传统编程(C,C++,Java)
(1)简介:传统编程一般被设计为通用型语言(如C,C++),往往是系统编程语言,因此它基于某种靠近计算机底层的离线形式,涉及汇编原理的内容。
(2)特点:具有一定通用性,它必须一切从头做起,这类语言往往是面向过程的编程语言,不灵活,无法用来解决抽象或特定领域的问题(可通过提供新的扩展库来实现);C的数据结构+算法可用来解释系统底层开发的手段,非应用开发语言
(2)应用:自然语言开发、扩展库或高层模型的底层算法,如Python语言的底层算法就是用C写的
2.1.3 脚本式编程(python)
(1)简介:脚本语言和虚拟机语言可基于更高层的开发逻辑和设计方式来解决问题,程序员不必涉入数据结构这些与底层和解决大家都解决过的问题直接相关的东西(简单来理解,例如手机,脚本语言相当于使用它打电话、上网、聊天、购物等,而系统语言就是为这些功能提供底层算法及数据结构)
(2)特点:接近自然语言,解决特定领域问题(抽象),基于高层模型(基于C,C++),无需开发平台,考虑移植和速率问题,面向应用编程,封装系统编程和系统逻辑并打包,提供大量扩展库,复用性
(3)应用:脚本式开发,OO层面复用,实现特定领域功能,如数据分析、人工智能等;
2.2 标识符
2.2.1 标识符的概念
(1)定义:在Python语言中用于规范命名解释器能识别的可执行代码对象的名称。(其实面向对象中的对象只是一个逻辑上的称呼,如变量、关键字、函数、运算符、类等都可以是对象,完整的标识符包括格式控制符、#等)
(2)硬性规则:由字母、数字、下划线组成;不可数字开头;不能是关键字;不含空格;严格区分大小写(num与Num是两个标识符);不能有特殊符号(!@¥%等)
(3)软性规则:有描述性,见名知义;驼峰法则/低杠(StuScore、stuScore、stu_score);
(4)匈牙利命名法:匈牙利命名法由匈牙利程序员Charles Simonyi发明的一种编程语言中对变量进行命名的规范。变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的,但是此命名法有争议。(stuscore/frmSwitchboard/)
2.2.2 关键字
关键字是系统已经定义过的标识符,它在程序中已经有了特定的含义,因此这些保留关键字不能用于变量名、函数名、类名等,他们属于Python语言本身的专用标识符。
(1)查看关键字:print(keyword.kwlist)
import keyword # 导入模块 a = keyword.kwlist #生成关键字列表赋给变量a print(len(a)) #看看有多少个关键字 print(a) =========================================================================== 33 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
(2)关键字功能简介:
False |
布尔类型的值“假”,与True |
True |
布尔类型的值“真”,与False |
None |
特殊,表示什么也没有,NoneType类型 |
and |
表达式运算,逻辑与操作 |
or |
表达式运算,逻辑或操作 |
is |
判断变量是否为某个类的实例 |
not |
表达式运算,非操作 |
in |
判断变量是否在序列中 |
try |
try包含可能会出现异常的语句,与except、finally结合使用 |
class |
用于定义类 |
def |
用于定义函数或方法 |
for |
for循环语句 |
continue |
跳出本次循环,继续执行下一次循环 |
break |
中断循环语句的执行 |
return |
用于从函数返回计算结果 |
while |
while循环语句 |
if |
条件语句,与elif、else结合使用 |
elif |
条件语句,与if、else结合使用 |
else |
条件语句,与if、elif结合使用,也可用于异常和循环语句 |
with |
简化Python的语句 |
pass |
空的类、方法或函数的占位符 |
from |
用于导入模块,与import结合使用 |
import |
用于导入模块,与from结合使用 |
except |
except包含捕获异常后的操作代码块,与try、finally结合使用 |
assert |
断言,用于判断变量或者条件表达式的值是否为真 |
as |
用于类型转换 |
del |
删除变量或序列的值 |
raise |
异常抛出操作 |
finally |
用于异常语句,出现异常后,始终要执行finally包含的代码块与try、except结合使用 |
global |
定义全局变量 |
lambda |
定义匿名函数 |
nonlocal |
用于标识外部作用域的变量 |
yield |
用于从函数依次返回值 |
2.3 变量与常量
2.3.1 变量与常量的概念
(1)变量:变量(Variable),指在计算机编程中与关联的标识符配对的内存存储位置,在使用时含相关类型的值,其值可以修改。(这里的标识符就是变量名,在变量被使用时,在内存里将产生两个动作,一是开辟指定地址的空间,二是赋予指定变量值,在Python语言中,变量在指定的同时,必须强制赋初始值,否则解释器报错)
(2)常量:Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量。(通过自定义类可实现常量,要求符合命名全部为大写、值一旦被绑定不可再修改)
2.3.2 变量的分类
(1)常规变量:字母开头命名的变量,可用于常规赋值
(2)__name__:这种类型的变量在python中有特殊意义,属于对象的内置属性,以后学了类和对象就知道了
(3)_x:这类变量不会被from ModuleName import *
的方式导入
(4)_ _x:是类的本地变量或称为类的私有变量,它会扩展成_ _classname_x除此之外,还有约定俗成的命名方式(没有强制限制,此处故意加个空格区分,实操时无空格):
①常量以全大写字符表示
②普通变量、函数名、方法名都以小写字母开头命名
③模块名、包名以全小写字母命名
④类名以大写字母开头
2.3.3 变量的赋值
(1)序列赋:
①序列形式的赋值,其中[]、()、{}只是个形式,可要可不要(嵌套例外),严格按照
变量数=值的数量 即可
②字符串、字典、集合不能被赋值,前两者不可变,后者无序
③嵌套赋值,也就是多维序列,按照层层剥皮,再套用前面的几种赋值可找出最终结果,但元素要保证其完整性和对应性
a,b = [1,2] c,d = (3,4) e,f = {5,6} g,h = " #但是字符串不能被赋值,他是不可变类型 i,j = {1:"ab",2:"cd"} #此种赋的是key print(a,b,c,d,e,f,g,h,i,j) (a1,b1) = [1,2] #此四行大中小括号,要与不要都行,它只是个形式,其灵魂是“序列” [c1,d1] = (3,4) #只要保证前后对应,个数一致就行 (e1,f1) = {5,6} [g1,h1] = {7,8} #集合无序,此处给g1,h1随机匹配,具体后面数据类型中详述 # {i1,j1} = [7,8] #序列式赋值,严格讲究位置顺序的,位置确定,集合无序,此处飘红 # {k1,l1} = (9,10) (m1,n1) = {11:"ef",12:"ij"} print(a1,b1,c1,d1,e1,f1,g1,h1,m1,n1) ((o,p,q),r) = [{1,"a","c"},3] print(o,p,q,r) =========================================================================== 1 2 3 4 5 6 7 8 1 2 1 2 3 4 5 6 8 7 11 12 1 c a 3
(2)解包赋:
(2)解包式赋值 ① * 表示解包的意思,作用于序列,但多维序列只拆一层,以元素的值单一呈现 A = (1,2,"a","b") B = [1,2,"a","b"] C = {1:"a",2:"b"} D = {1,2,"a","b"} E = [1,2,("a","b"),[3,4],{1:"a",2:"b"}] print(*A,"\n",*B,"\n",*C,"\n",*D,"\n",*E) =========================================================================== 1 2 a b 1 2 a b 1 2 1 2 b a 1 2 ('a', 'b') [3, 4] {1: 'a', 2: 'b' ②解包后的结果是原序列的每个元素值,是单个元素的值,能被打印,但不能直接用来赋值 A = (1,2,"a","b") a = *A print(a) =========================================================================== File "F:/Python成长日记/test2.py", line 9 a = *A ^ SyntaxError: can't use starred expression here ③解包赋值,带 * 的变量称之为解包变量,例如 *A(此处A仅仅是个变量的名称),我们都知道,在Python中不同于C/C++(变量需要提前声明其类型才能被赋值),而Python天生具备智能识别天赋,你给它赋什么类型的值他就自己默认声明了是啥类型,那么这里的 *A,就具有“返祖”现象(为啥这么说呢,查下Python的底层代码就知道了),这里的 * 就是强制性声明变量A是一个列表类型变量,什么意思,就是强制性先将它所指的地址分解成一个列表(有序排列的地址然后形成一个变量地址),也就是说 * 是先拆包再打包的意思(从地址的角度来说) a,*b = 1,2,3,4,5 print(a,b) print(type(b)) a,*b = 1,2,3,{4,5,6,7} print(a,b) print(*b) print(type(b)) =========================================================================== 1 [2, 3, 4, 5] <class 'list'> 1 [2, 3, {4, 5, 6, 7}] 2 3 {4, 5, 6, 7} <class 'list'> ④既然是声明b是一个列表,那它能否被单独赋值呢?不能,因为Python具有一定唯一性,Python这种高级语言并非系统语言,是用来实现特定功能的(既然我们可以用b来直接赋值一个列表,或者通过list()函数转换,为啥还要用*b这种方式呢) *b = 1,2,3,4,5 print(b) =================================================================================== File "F:/Python成长日记/test2.py", line 9 *b = 1,2,3,4,5 ^ SyntaxError: starred assignment target must be in a list or tuple 而且我们还可以用②中的观点来解释,它并非一个序列(这里比较抽象),就不能被赋值(a=1,这里的a可以看作是一个元素的序列)
(3)多目标:a=b=“Python”
(4)二元赋:a+=3 ==> a=a+3(),python的数值是不可变对象,无法在原处修改数据,所以不支持自增、自减(如a++,a--,++a,--a等)
(5)表达式:a=b+c a=func() a=class()
2.4 排版缩进
2.4.1 换行:Python严格按照每行执行一条语句(可多条,中间分号隔开,但约定不用)
2.4.2 缩进:如函数体、类方法、实例方法、循环体、条件内容等严格缩进表示一个代码块从属于一条语句
2.5 内置模块
2.5.1 基本标准模块
2.5.2 读写文件模块
2.5.3 数据分析模块
2.5.4 数据可视化模块
2.5.5 网络相关模块
【Python基础】_2 Python基本语法与常识(迭代优化中...)的更多相关文章
- 二十一. Python基础(21)--Python基础(21)
二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性: #类.属性: 调用的就是类中的属性 #对象.属性: 先从自己的内存空间里找名 ...
- python基础入门一(语法基础)
作为自己正式接触并应用的第一门编程语言,在Alex和武sir两位大王的要求下,开始了写博客总结的日子.学习编程语言是很有趣的一件事情,但有2点请一定要谨记:1.做人靠自己,码代码也必须靠自己.能不能成 ...
- Python基础知识1-基础语法
pyenv--版本管理工具(后续再补)可参见https://www.jianshu.com/p/8aaf2525fa80 冯诺依曼体系架构 编程基础 语言分类 低级语言到高级语言 高级语言 程序Pr ...
- 【Python基础知识】【语法】【入门】
一.Python概述 Python是一门面向对象的编程语言,拥有强大丰富的库,没有操作系统的限制,是一种优美.清晰的编程语言. 二.Python基础语法 1.Python标识符 标识符就是程序中定义的 ...
- 第一章:Python基础の快速认识基本语法
本課主題 第一个 Hello World 程序实战 用户输入实战 模块介紹 变量介绍 格式化介紹 条件判断介紹和操作实战 for 循环介紹和操作实战 作业需求 Python 第一个 Hello Wor ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- python基础实践 -python是一门动态解释性的强类型定义语言
python是一门动态解释性的强类型定义语言 Python能做什么? Python是一门综合性的语言,你几乎能在计算机上通过Python做任何事情,以下是Python应该最广泛的几个方面: 1.网络应 ...
- python基础7 ---python函数
python基础知识 一.闭包函数 1.闭包函数的定义:在一个内部函数中,在对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包. 2.闭包函数的特点:自带作用域和延迟计算 补 ...
- Python基础 初识Python
机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据. 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执 ...
- python基础-初识Python和不同语言之间的区别
一.Python的创始人谁? Python之父:吉多·范罗苏姆GuidovanRossum 吉多·范罗苏姆是一名荷兰计算机程序员,他作为Python程序设计语言的作者而为人们熟知.在Python社区, ...
随机推荐
- 第六篇:Scrapy框架
爬虫框架之Scrapy 一.介绍 二.安装 三.命令行工具 四.项目结构以及爬虫应用简介 五.Spiders 六.Selectors 七.Items 八.Item Pipelin 九. Dowload ...
- Java面试之框架篇(9)
spring现在无疑是Java中最火的框架,使用范围广,几乎每个公司面试都会涉及spring和数据库,你可以对Struts不熟悉,但一定不能表现出对spring不了解.第九篇赢在面试全篇介绍sprin ...
- python3---99乘法表
参考: http://www.cnblogs.com/suiy-160428/p/5594389.html #!/usr/bin/env pythonfor i in range(1,10): for ...
- pycharm问题集锦
1.pycharm的激活方式 参考博客https://blog.csdn.net/u014044812/article/details/78727496 2.总是出现波浪线,如下问题 问题原因:knn ...
- nginx展示文件目录
1. 如何让nginx显示文件夹目录 vi /etc/nginx/conf.d/default.conf 添加如下内容: location / { root /data/www/file //指定实际 ...
- ZooKeeper 原生API操作
zookeeper客户端和服务器会话的建立是一个异步的过程,也就是说在程序中,程序方法在处理完客户端初始化后立即返回(即程序继续往下执行代码,这样,在大多数情况下并没有真正的构建好一个可用会话,在会话 ...
- Jar包方式运行web项目
使用Maven进行打包 在自己的电脑终端中进入到pom.xml文件的目录中执行maven打包.命令为: mvn clean package 1 成功的标志为上面显示BUILD SUCCESS成功打包 ...
- 自定义input上传图片组件
自定义input上传图片组件,美化样式 前段时间因为项目需求,做过一个上传图片组件,这里分享下大致思路,希望对有需要的童鞋有所帮助~~~ 功能需求:1.上传图片限制大小.分辨率.类型 2.上传图片支持 ...
- 看完你也想编写自己的 react 插件
副标题----为什么我要写这个 react 插件 图片懒加载是项目中常用的功能,然而现有 react 懒加载组件库,用着都不是很爽了 ?.概括一下有如下几点: 没有只针对 image 懒加载组件.多数 ...
- 使用 java替换web项目的web.xml
创建一个接口: package my.web; public interface SpringWeb { void config(); } 实现类: package my; import my.web ...