现在让我们从基础概念开始逐步探索Python的语法,编程语言包含多种指令,其中最基本的是"表达式”(Expression),表达式有特定的"值”(Value),例如:1就是一个最简单的表达式,它的值就是1,当你在交互模式下输入1,计算机会返回这个表达式的值1。使用"运算符”(Operator)可以将多个单一表达式组成复合表达式,例如:1+1,Python中的数学运算符除了加减乘除(+-*/)外还有整除(//)取余(%)和乘方(**),运算顺序遵循数学规则,括号可以改变运算顺序,但注意一律使用小括号。通过这样的层层组合,你可以输入任意数学运算式所对应的表达式,计算机总是会自动计算并返回单一的值。

02_expression.png

这个单一的值被称为"物件”或"对象”(Object),对象是一个非常关键的概念,你很快就会发现在Python中"一切皆对象”。每个对象都存在于计算机的内存空间,拥有唯一的编号和确定的类型,你可以用id(对象)来查看它的编号(所在的内存地址),用type(对象)来查看它的类型(所属的"类”名称):

>>> id(1)

1756786144

>>> id(5%2)

1756786144

>>> id(2)

1756786176

>>> type(1)

>>> type(2)

>>> id(1.0)

2705425373944

>>> type(1.0)

你可以看到1是整数类型(int),带有小数点的1.0则是浮点类型(float),浮点类型用于表示实数。其实我们还接触过字符串类型(str),在任意长度的字符序列前后加上引号就定义了一个字符串,字符串支持加法(通过连接生成新字符串)和乘法(通过重复生成新字符串):

>>> "你好"

'你好'

>>> "你好"+"世界!"

'你好世界!'

>>> "你好世界!"*3

'你好世界!你好世界!你好世界!'

>>> type("你好世界!"*3)

和数学中一样,你可以用"变量”(Variable)来代表某个数值,这称为变量"赋值”(Assign),变量名可以使用字母(区分大小写)、数字(但不能以数字开头)和下划线,也可以使用任何全角字符包括所有汉字(但建议不要用全角字符)。变量不能和Python语言的关键字重名,否则执行时会报语法错误,你可以输入help("keywords")查看关键字列表。变量赋值语句的基本写法是:变量名=表达式,注意"=”应该读作"赋值”(Python中的等于号是==),一个变量也就是一个单一表达式:

>>> x=1

>>> x+2

3

>>> x,y=1,100 # 同时给多个变量赋值

>>> x

1

>>> y

100

>>> x=x+1 # x原值加1再赋值给x

>>> x

2

>>> x+=1 # x原值加1再赋值给x的简洁写法

>>> x

3

>>> x,y=y,x # 对调两个变量所指的对象,其他编程语言基本都需要三条指令才能实现这个操作……

>>> x

100

>>> y

3

>>> type(x)

>>> x="你好世界!"

>>> type(x)

你可以让两个变量指向同一个对象,也可以用del语句删除已有的变量:

>>> y=x # 两个变量指向了同一个对象

>>> id(x)

2565766974768

>>> id(y)

2565766974768

>>> dir() # 查看当前名称空间的变量

['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x', 'y']

>>> del y # 删除已有变量

>>> dir()

['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x']

>>> 类型=type # 汉字也可以用做变量名

>>> 类型(x)

>>> 类型(id)

>>> 类型(类型)

现在你可能会猜到了,这些id(1)、type(1),还有我们已经接触过的print("Hello World!")也属于复合表达式,id、type、print也是指向某个对象的变量,这种对象是可以做"调用”(Call)运算的,在Python中分为"函数”(function)、"方法”(method)和"类型”(type)等类型,相当于数学中函数的概念。函数名就相当于运算符,参加运算的表达式放在函数名之后的括号里,称为"参数”(Argument),如果有多个参数就用逗号分隔,而运算的结果就是函数的返回值。例如max函数可以从多个数中找出最大值:

>>> max

>>> max(1,3,9,2)

9

>>> type(max)

>>> type(max(1,3,9,2))

函数能完成各种复杂的功能。例如之前看到的input函数,可以接受一个字符串参数,执行时会显示此字符串作为提示,然后将用户在按回车键之前输入的全部内容作为字符串返回,也可以写成不带参数的input(),执行时就不显示任何提示。print函数同样可以不带参数,这将输出一个空行;也可以带任意多个参数,这将输出以空格分隔的多个值。注意:print函数输出的内容并不是它的返回值,print函数无返回值——或者可以说print函数返回值为"空”,Python专门定义了一个关键字None来代表空值(类型为NoneType),当返回值为空时不显示任何东西,如果你想强制输出空值,可以print(None):

>>> None

>>> print(None)

None

>>> print(1,2,3)

1 2 3

>>> print(print(1,2,3)) # 内层print输出三个参数的值,外层print输出内层print返回的空值

1 2 3

None

总而言之,Python语言中的变量就是贴在对象上的标签,所以它还有一个更笼统的叫法——标识符(Identifier)。变量没有确定的类型,它所指向的对象有确定的类型。在Python关键字以外的任何名称例如print也就是一个指向具体对象的变量而已,你完全可以把它指向别的对象(当然不建议这样做):

>>> p=print # p和print都指向同一个函数对象

>>> p(x)

你好世界!

>>> print=10 # print指向一个整数对象了

>>> print(x) # 如果尝试调用运算,会提示类型错误"int对象是不能调用的”

Traceback (most recent call last):

File "", line 1, in

print(x)

TypeError: 'int' object is not callable

——编程原来是这样……

编程小提示:Python解释器的源码

官方Python解释器是用C语言编写的,称为CPython,你可以在这里查看CPython的源代码 https://github.com/python/cpython

如果你想知道所有内建函数是怎样实现的,可以打开这个C文件,例如其中的builtin_print函数就对应Python中的print函数 https://github.com/python/cpython/blob/master/Python/bltinmodule.c

python基础编程语法-编程入门02:Python基础语法相关推荐

  1. keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...

    这是密歇根大学课程Python For Everybody总结的P2部分.课程总结P1部分的地址如下: P1: 零基础程序设计(Python 入门) carolinezhq:[Python]数据分析前 ...

  2. IOS基础之UIDynamicAnimator动力学入门-02

    IOS基础之UIDynamicAnimator动力学入门-02 10-弹性附着 // // ViewController.m // 10-弹性附着 // // Created by 鲁军 on 202 ...

  3. python数据处理电脑配置_『大数据python计算机基础教学视频教程』入门学python需要什么配置的电脑...

    x = 1 if x 4.2 1) else匹前的缩进相同且最接近的if 2) 改之前y=x 2行,之后是y=x 1先执行 第5题 代码还n = 1 while n <= 5: i = 1 wh ...

  4. 大数据 python和java_大数据入门选择Python还是Java?

    原标题:大数据入门选择Python还是Java? java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两 ...

  5. 学python有哪些用途-初入门学习python有哪些用途?

    python是人工智能的重要编程语言,无论发展前景还是就业方向,不可限量.更重要的是python还是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.那么初入门学习python有哪些用途呢 ...

  6. 手机安装python的步骤_小白入门:Python安装的10个步骤,极其细致!!

    (2)3.X.X需要下载windows XXX executable installer 4. 下载完成后打开 (1)勾选Add Python 3.6 to PATH是把Python的安装路径添加到系 ...

  7. TCP网络编程模型从入门到实战基础篇,单服务器单个用户非并发版本

    文章目录 前言 一.网络编程实践的必备基础知识 二.系统调用方法刨析 1.socket 2.bind 3.listen 4.accept 5.connect 三.实现一个简单的功能, 服务器将单客户端 ...

  8. python广告搞笑_技术入门 | 听说Python的广告刷爆了你的朋友圈?

    前几天,一条 Python 广告刷爆了小编的朋友圈.网友纷纷惊呼,"什么鬼?居然这么多人在学 Python?"而在日前 IEEE Spectrum 发布的第五届年度编程语言交互排行 ...

  9. python和c哪个适合入门-关于python和c语言学哪个好

    python和c语言哪个好 对于初学者在面对python和c语言不知道学习哪一个,更不知道python与c语言的区别?下面码农之家就为您讲解一下有关python和c语言哪个好,希望对你有一定的帮助. ...

  10. HTML第一章 (WEB基础知识、 HTML入门、HTML的语法规则、HTML常用标签汇总、图片与超链接、HBuilder的快捷键)

    目录 一.WEB基础知识 二.HTML入门 三.HTML的语法规则 四.HTML标签 五.图片与超链接 六.HBuilder的快捷键 每日一句 一.WEB基础知识 我们可以做什么? WEB前端 大前端 ...

最新文章

  1. 从头到尾彻底解析Hash表算法
  2. 在用交叉熵损失函数时,只希望惩罚0.4-0.6这样模糊的值,应该怎么改?
  3. python 数据验证
  4. OO实现ALV TABLE 十:ALV的页眉页脚
  5. Oracle的CASE语句和表达式
  6. 《深入理解JVM.2nd》笔记(一):走进Java
  7. kettle 批量多表同步_财务基础数据同步的方式
  8. linux 分区个数限制,Linux分区个数限制[转载]
  9. 联想服务器自动关机_IBM 联想 DELL HP服务器自动关机|解决办法整理
  10. net3.5离线一键安装工具_一键获取抖音直播源地址(无水印高清下载),无需安装Fiddler抓包工具...
  11. Packet Tracer安装包及安装教程(8.0版本)
  12. 二十一条自动化测试过程中遭遇的问题及解决思路
  13. Java 打印 Excel 表格
  14. SDUTOJ 2178 - 链表的有序集合
  15. 第十一家面试(堆糖)
  16. IDEA运行web项目及乱码处理
  17. docker搭建kong、konga步骤
  18. 苹果浏览器safari推介
  19. SLAM综述科普性文章
  20. 前端安全问题及防范措施

热门文章

  1. Python数据结构与算法笔记(二):递归介绍及汉诺塔问题
  2. Java接口的实现源代码_Comparable接口的实现:源代码
  3. 解决Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
  4. bzoj 1312: Hard Life 01分数规划+网络流
  5. 超级楼梯HDU2041
  6. UVA11942 Lumberjack Sequencing【Ad Hoc】
  7. JSK-136 公式计算【入门】
  8. UVA495 Fibonacci Freeze【大数+万进制】
  9. 从一个例子看频率学派与贝叶斯学派的不同(Python)
  10. 常见空指针异常及其避免