热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python函数定义的语法形式_Python入门之你必须了解的语法与类型

Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常使用的标点符号和英语单词,让源代码整体看起来很整洁美观。它不像静态语言如C、Pasc

Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常使用的标点符号和英语单词,让源代码整体看起来很整洁美观。它不像静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。

缩进

Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和煺出。增加缩进表示语句块的开始,而减少缩进则表示语句块的煺出。缩进成为了语法的一部分。例如

if语句:

ifage <21:

print("你不能買酒。")

print("不過你能買口香糖。")

print("這句話處於if語句塊的外面。")

根据PEP的规定&#xff0c;必须使用4个空格来表示每级缩进。使用Tab字符和其它数目的空格虽然都可以编译通过&#xff0c;但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为了兼容很旧的Python程序和某些有问题的编辑器。

语句和控制流

◆ if语句&#xff0c;当条件成立时执行语句块。经常与else,elif(相当于else if)配合使用。

◆ for语句&#xff0c;遍历列表、字符串、字典、集合等迭代器&#xff0c;依次处理迭代器中的每个元素。

◆ while语句&#xff0c;当条件为真时&#xff0c;循环执行语句块。

◆ try语句。与except,finally配合使用处理在程序运行中出现的异常情况。

◆ class语句。用于定义类型。

◆ def语句。用于定义函数和类型的方法。

◆ pass语句。表示此行为空&#xff0c;不执行任何操作。

◆ assert语句。用于程序调试阶段时测试运行条件是否满足。

◆ with语句。Python2.6以后定义的语法&#xff0c;在一个场景中运行语句块。比如&#xff0c;运行语句块前加锁&#xff0c;然后在语句块运行结束后释放它。

◆ yield语句。在迭代器函数内使用&#xff0c;用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。

表达式

Python的表达式写法与C/C&#43;&#43;类似。只是在某些写法有所差别。

◆ 主要的算术运算符与C/C&#43;&#43;类似。&#43;, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, &#61;&#61;, !&#61;, <&#61;, >&#61;用于比较两个表达式的值&#xff0c;分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面&#xff0c;~, |, ^, &, <<, >>必须应用于整数。

◆ Python使用and, or, not表示逻辑运算。

◆ is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。

◆ Python支持"列表推导式"(list comprehension)&#xff0c;比如计算0-9的平方和:

>>> sum(x * xforxinrange(10))285

◆ Python使用lambda表示匿名函数。匿名函数体只能是表达式。比如&#xff1a;

>>> add&#61;lambdax, y : x &#43; y>>> add(3,2)5

◆ Python使用y if cond else x表示条件表达式。意思是当cond为真时&#xff0c;表达式的值为y&#xff0c;否则表达式的值为x。相当于C&#43;&#43;和Java里的cond?y:x。

◆ Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3]&#xff0c;而tuple的写法是(1,2,3)。可以改变list中的元素&#xff0c;而不能改变tuple。在某些情况下&#xff0c;tuple的括号可以省略。tuple对于赋值语句有特殊的处理。因此&#xff0c;可以同时赋值给多个变量&#xff0c;比如&#xff1a;

>>> x, y&#61;1,2#同时给x,y赋值&#xff0c;最终结果&#xff1a;x&#61;1, y&#61;2

◆ 特别地&#xff0c;可以使用以下这种形式来交换两个变量的值&#xff1a;

>>> x, y&#61;y, x#最终结果&#xff1a;y&#61;1, x&#61;2

◆ Python使用&#39;(单引号)和"(双引号)来表示字符串。与Perl、Unix Shell语言或者Ruby、Groovy等语言不一样&#xff0c;两种符号作用相同。一般地&#xff0c;如果字符串中出现了双引号&#xff0c;就使用单引号来表示字符串;反之则使用双引号。如果都没有出现&#xff0c;就依个人喜好选择。出现在字符串中的\(反斜杠)被解释为特殊字符&#xff0c;比如\n表示换行符。表达式前加r指示Python不解释字符串中出现的\。这种写法通常用于编写正则表达式或者Windows文件路径。

◆ Python支持列表切割(list slices)&#xff0c;可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, tuple等。它的语法是...[left:right]或者...[left:right:stride]。假定nums变量的值是[1, 3, 5, 7, 8, 13, 20]&#xff0c;那么下面几个语句为真&#xff1a;

◆ nums[2:5] &#61;&#61; [5, 7, 8] 从下标为2的元素切割到下标为5的元素&#xff0c;但不包含下标为2的元素。

◆ nums[1:] &#61;&#61; [3, 5, 7, 8, 13, 20] 切割到***一个元素。

◆ nums[:-3] &#61;&#61; [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。

◆ nums[:] &#61;&#61; [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。

◆ nums[1:5:2] &#61;&#61; [3, 7]

函数

Python的函数支持递归、默认参数值、可变参数&#xff0c;但不支持函数重载。为了增强代码的可读性&#xff0c;可以在函数后书写”文档字符串“(Documentation Strings&#xff0c;或者简称docstrings)&#xff0c;用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如&#xff1a;

>>>defrandint(a, b):

..."Return random integer in range [a, b], including both end points."

...

>>> help(randint)

Help on function randintinmodule __main__:

randint(a, b)

Return random integerinrange [a, b], including both end points.

对象的方法

对象的方法是指绑定到对象的函数。调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。当定义对象方法时&#xff0c;必须显式地定义***个参数为self&#xff0c;用于访问对象的内部数据。self相当于C&#43;&#43;, Java里面的this变量。比如&#xff1a;

classFish:

defeat(self, food):

iffoodisnotNone:

self.hungry&#61;False

#构造Fish的实例&#xff1a;

f&#61;Fish()

#以下两种调用形式是等价的&#xff1a;

Fish.eat(f,"earthworm")

f.eat("earthworm")

Python认识一些以”__“开始并以"__"结束的特殊方法名&#xff0c;它们用于实现运算符重载和实现多种特殊功能。

类型

Python采用动态类型系统。在编译的时候&#xff0c;Python不会检查对象是否拥有被调用的方法或者属性&#xff0c;而是直至运行时&#xff0c;才做出检查。所以操作对象时可能会抛出异常。不过&#xff0c;虽然Python采用动态类型系统&#xff0c;它同时也是强类型的。Python禁止没有明确定义的操作&#xff0c;比如数字加字符串。

与其它面向对象语言一样&#xff0c;Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可&#xff0c;比如&#xff0c;对于前面定义的Fish类型&#xff0c;使用Fish()。类型本身也是特殊类型type的对象(type类型本身也是type对象)&#xff0c;这种特殊的设计允许对类型进行反射编程。

Python内置丰富的数据类型。与Java、C&#43;&#43;相比&#xff0c;这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x)&#xff1a;

0933180.jpg

除了各种数据类型&#xff0c;Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此&#xff0c;Python具备很强的动态性。

数学运算

Python使用与C、Java类似的运算符&#xff0c;支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数(实际受限于计算机的能力)的整数运算。除了求绝对值函数abs()外&#xff0c;大多数数学函数处于math和cmath模块内。前者用于实数运算&#xff0c;而后者用于复数运算。使用时需要先导入它们&#xff0c;比如&#xff1a;

>>>importmath

>>>print(math.sin(math.pi/2))

1.0

fractions模块用于支持分数运算;decimal模块用于支持高精度的浮点数运算。

Python定义求余运行a % b的值处于开区间[0, b)内&#xff0c;如果b是负数&#xff0c;开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式&#xff1a;b * (a // b) &#43; a % b &#61; a恒真&#xff0c;整除运行需要向负无穷小方向取值。比如7 // 3的结果是2&#xff0c;而(-7) // 3的结果却是-3。这个算法与其它很多编程语言不一样&#xff0c;需要注意&#xff0c;它们的整除运算会向0的方向取值。

Python允许像数学的常用写法那样连着写两个比较运行符。比如a

【编辑推荐】

【责任编辑&#xff1a;陈贻新 TEL&#xff1a;&#xff08;010&#xff09;68476606】

点赞 0



推荐阅读
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 本文介绍了在Linux中执行.sh脚本时出现/bin/sh^M: bad interpreter: No such file or directory异常的原因分析,并提供了两种解决方法:在Windows下进行编码格式转换,或在Linux中修改文件格式和执行权限。具体操作步骤也在摘要中给出。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 这是一个愚蠢的问题,但我只是对此感到好奇.假设我在Pythonshell,我有一些我查询的数据库对象.我做:db.query(的queryString)该查询在0xffdf842c ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • gitlab重置password
    ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
author-avatar
孟倩-951127
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有