本节需要熟悉python的符号和关键字的功能。

一、关键字

  1. and

  逻辑与,如 True and False == False的值为True

  2. as

  with...as...的功能类似try...except...finally...语句,也是一种python的控制流语句。

  先来看后者的功能:

  try:
execution block         #正常执行的模块
except A:
exc block A       #发生错误A时执行
except B:
exc block B         #发生错误B时执行
except:
exc other block         #发生其他错误时执行
else:
jump here when no excepti #不发生错误时执行
finally:
final block        #无论是否发生错误,都执行

  再来看前者的功能:

 with expression as variable:
with-block

  其中expression是一个类对象,它必须包含__enter__和__exit__两个函数。with...as...语句执行时,先执行expression中的__enter__函数,将其返回值赋给后面的variable,然后执行with-block中语句,最后执行expression中的__exit__。如果执行with-block时一切正常,则exception_type,exception_val,trace的返回值都是null;如果发生异常、错误,则同try语句一样,这三个变量会被系统赋予相应的值。

  二者逻辑是相似的,如with语句可以这样表达为try语句:

 try:
__enter__
with-block
finally:
__exit__

  3. assert

  断言(确保)某东西为真。

 assert expression, "Your prompt here."

  对expression判断真假,如果为真,则不输出任何东西;如果为假,则输出其后“ ”中的提示语句,可以自定义。

  4. break

  立即停止循环。

  用于while、for循环中,和if等语句连用为循环设置停止条件。注意,其只会使程序跳出本层循环,而外层仍会继续执行。

 n = 0
while True:
print(n)
n += 1
if n>=10:
break

  输出为 0 1 2 3 4 5 6 7 8 9

  5. class

  定义一个类。

  6. continue

  停止当前循环的后续步骤,再做一次循环。使用continue后,跳过当前循环后面的内容,直接开始下一次循环。

 n = 0
while True:
n += 1
if n == 4 or n ==5:
continue
print(n)
if n >= 10:
break

  输出为1 2 3 6 7 8 9 10

  7. def

  定义一个函数。

 def function(arg1, arg2):
func_description
return val1, val2

  8. del

  从字典中删除元素。

  【del,remove,pop的区别】

  del是python语句,它可以作用在list上,但无法通过list调用,它用来删除list中指定位置的元素,并以此将后面的元素向前移动填补空位。

  remove是list的操作,可以通过list调用,用于删除list中指定字符串。

  pop也是list操作,用于删除list中指定位置的元素。

 a = ['a','b','c','d','e','f','g','h']
print(a) del a[3]
print(a) a.remove('b')
print(a) a.pop()
print(a) a.pop(0)
print(a)

  运行结果为

>>>['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
['a', 'b', 'c', 'e', 'f', 'g', 'h']
['a', 'c', 'e', 'f', 'g', 'h']
['a', 'c', 'e', 'f', 'g']
['c', 'e', 'f', 'g']

  9. elif

  用于if语句。

  10. else

  用于if语句。

  11. except

  用于try语句。

  12. exec

  将字符串作为python脚本运行。

  其语法为

exec (object[, globals[, locals]])

  其中object为必选参数,可以是一个字符串,也可以是一个对象。如果object是一个字符串,它会先被解析为python语句,再被执行;如果object是一个对象,则简单的被执行。exec语句返回值永远为None。

  globals、locals为可选参数,分别表示全局命名空间(存放全局变量)、局部命名空间(存放局部变量),如果有,必须是字典的形式。

 x = 10

 expr = """
y = 20
sum = x + y + z
print(sum)
""" def mysum():
z = 20
exec(expr)
exec(expr,{'x':1,'z':2})
exec(expr,{'x':3,'y':5},{'x':1,'z':100}) mysum()

  输出结果为50 23 121。

  注意,第三个exec语句中,第一个字典{'x':3,'y':5}为全局变量,x、y的值首先被赋为3、5,第二个字典中,x的值被重新赋为1,z被赋为100expr中,而expr中定义的局部变量y具有值为20,因此sum = 1+20+100=121。

  13. finally

  不管try后语句是否发生异常,永远运行finally后的代码。

  14. for

  针对物件集合执行循环。

  15. from

  从特定模块中导入特定部分。

from A import x

  16. global

  声明全局变量。如果想在函数内部调用一个全局变量,必须用global进行声明,使得在该代码块内可以调用这个全局变量具有的值,而无需作为参数传入。

  例如,以下运行会报错

 count = 1

 def func():     count +=1
print(count) func()
Traceback (most recent call last):
File "ex37.py", line 7, in <module>
func()
File "ex37.py", line 4, in func
count +=1
UnboundLocalError: local variable 'count' referenced before assignment

  因为在func中count为局部变量,它没有被赋值。

  将count声明为全局变量后程序顺利运行:

 count = 1

 def func():
global count
count +=1
print(count) func()

  输出结果为 2。

  应注意,尽管声明只在当前函数内有效,但函数内部对全局变量的值的修改是会传递到函数外的,因此才叫“全局”变量。

  17. if

  if条件语句。

  18. import

  导入模块。

  19. in

  for循环的一部分;或作为x是否在y中的条件判断。

 a = [1,2,3]
b = 4 in a
c = 1 in a
print(b, c)

  输出为 False True。

  20. is

  类似于==,用于判断真假。

  21.lambda

  创建短匿名函数。

  lambda的主体只是一个表达式,它比def的函数体要简单许多,它的表达式中只能封装有限的逻辑。

  lambda函数有自己的命名空间,不能访问自身参数表意外的参数,也不能访问全局空间的参数。

  其函数语法只包含一个语句,如下

lambda [arg1 [, arg2,...argn]]: expression

  一般用法如下

 difference = lambda x1, x2: x1-x2
print(difference(20, 10))

  22. not

  逻辑非

  23. or

  逻辑或

  24. pass

  表示空代码块。

  例如

 def emptyfunc():
pass

  用于定义一个空函数,有时在函数定义时没有想好函数的功能,可以先用pass占位,使得整个程序可以顺利执行。

  25. print

  打印字符串等。

  26. raise

  用于抛出用户自定义异常,例如

raise ErrorType('Your prompt here.')

  其中,ErrorType必须是一个异常的实例或异常的类(也就是exception的子类)

  27. return

  返回值并退出函数。

  28. try

  用于try...except...else...finally语句,检查程序异常。

  29. while

  while循环。

  30. with

  用于with...as...语句。

  31. yield

  暂停函数,返回到调用函数的代码块中。

  【联】python中的生成器(generator)

  生成器是一个返回迭代器的函数,它和普通函数最重要的区别在于含有yield语句。生成器的使用可以有效的节约系统资源,避免不必要的内存占用。

  参考:python yield使用浅析    python yield用法总结

  例如

 def func():
a = 10
yield a
print(a) func().__next__()

  其中,如果采用书上写法func().next()会报以下错误:

  ‘generator’ object has no attribute ‘next’

  这是因为python3中生成器中的next变为了__next__,next是以前的版本的写法。

二、数据类型

  1.True

  布尔值“真”。

  2. False

  布尔值“假”。

  3. None

  表示“不存在”或“没有值”

  注意,None也可以作为列表的合法元素,例如

 list = [1,2,3,None,[],{},()]
print(len(list))

  其输出结果为 7。因为None、[]、{}、()都是合法元素。

  4. bytes

  字节串存储,可能是文本、PNG图片、文件等,如

 x = b'hello'
print(type(x))

  输出为

<class 'bytes'>

  可见,bytes也是一种数据类型,当字符串前面加了b时,它的数据类型就不是string而时bytes了。

  5. strings

  存储文本信息。

  6. numbers

  存储整数。

  7. Floats

  存储十进制数。

  8. lists

  存储列表。使用[ ]括号。

  9. dicts

  存储键-值映射。使用{ }括号。

三、字符串转义序列

  \\  反斜杠

  \'  单引号

  \"  双引号

  \a  响铃

  \b  退格符

  \f  表单填充符,翻页符

  \n  换行符

  \r  回车符

  \t  制表符

  \v  垂直制表符

四、老式字符串格式

  python 2使用这些格式化字符实现f-string的功能,如

 a = 10.23
print('hello %d world'%(a))

  输出为

hello 10 world

  %d  十进制整数

  %i  同%d

  %o  八进制数

  %u  无符号整数

  %x  小写十六进制数

  %X  大写十六进制数

  %e  指数表示,小写e

  %E  指数表示,大写E

  %f  浮点实数

  %F  同%f

  %g  %f和%e中较短的一种

  %G  同%g,大写

  %c  字符格式

  %r  Repr格式(调试格式)

  %s  字符串格式

  %%  百分号本身

  

五、运算符

  **  幂运算

  /   除

  //  除后向下取整

  %   字符串翻译,或求余数

  @   修饰器符

  修饰器符@必须在它修饰的函数def之后使用,解释器读到修饰器符@后,会先解析@后面的内容,并把下一行的函数/类作为@后面的函数的参数,然后将返回值赋给下一行修饰的函数的对象,如

 def a(m):
s = m(5) + 1
print(s) @a
def c(n):
n = n * 2
print(n)
return n

  输出为

10
11

  注意,@的作用对象包括本行内紧跟@之后的函数(上面的a),也包括下一行的函数(上面的c),前者是被修饰的,后者是用于修饰的。

  语句执行时,先解析@后语句,即函数a,将函数c赋值给函数a的形参m(并不是将c的返回值赋给a的形参,也就是说m的type是function,而不是int),再将实参5赋给函数c的形参n,函数c被调用,因此打印出值10,其返回值参与函数a中运算,并打印值11。

  

【Python基础】lpthw - Exercise 37 复习各种符号的更多相关文章

  1. python 基础部分重点复习整理--从意识那天开始进阶--已结

    pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...

  2. Python之路【第二篇】:Python基础

    参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...

  3. Python基础(二) —— 字符串、列表、字典等常用操作

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...

  4. Python 基础 一

    Python 基础  一 一.关于Python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum),这一两年在国内很流行,应用很广泛. 二.Python的基础知识(1) 1 ...

  5. Python基础教程 - Tdcqma

      1.1 普通字符串 1.21 错误与异常 1.41 XXXXXX 1.61 XXXXXX 1.81 XXXXXX 1.101 XXXXXX 1.2 转义字符串 1.22 装饰器         1 ...

  6. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  7. (路-莫)-Python基础一

    一,Python介绍 1,python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打 ...

  8. python基础班-淘宝-目录.txt

    卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python基础班-淘宝-目录.txt│ ├─1-1 Linux基础│ ├─01-课程简介│ │ 01-课程 ...

  9. Python基础语法题库

    引言: 语法练习包括Python基础语法.数据类型.字符编码和简单文件操作等内容. 正文(参考答案附录在题目下方): 1.Python 里用来告知解释器跳过当前循环中的剩余语句,然后继续进行下一轮循环 ...

随机推荐

  1. iTOP-4412开发板_驱动_adc驱动升级和测试例程

    本文档介绍 iTOP-4412 开发板的 adc 驱动的升级和测试例程.自带的驱动只能支持一路 adc,本文介绍如何修改可以支持 4 路 adc 的控制.1 硬件简介如下图所示,这是 4412 的 d ...

  2. 菜鸟博客装饰分享CSS+HTML+js

    博客布局更改,各种百度,自己修改,搞成现在这样,有兴趣的朋友可以复制我下面的把自己博客覆盖了,然后在进行更改 不懂可加群问我:675678830 如果想开通打赏,用到js,需要在 下列中 博客侧边栏公 ...

  3. SpringCloud+ZUUL跨域请求中的OPTIONS请求处理

    目前项目结构是VUE做前端,后端采用微服务架构,在开发时前端需要跨域请求数据,通过CorsConfig配置解决了简单跨域请求需要.但当需要在请求的header中增加token信息时,出现了请求失败的情 ...

  4. innodb文件损坏处理

    innodb文件损坏报错如下: 2018-09-03T09:52:43.486363Z 0 [ERROR] InnoDB: Space id and page no stored in the pag ...

  5. 【原创】大数据基础之Ambari(3)通过Ambari部署Airflow

    ambari2.7.3(hdp3.1) 安装 airflow1.10 ambari的hdp中原生不支持airflow安装,下面介绍如何通过mpack方式使ambari支持airflow安装: 1 下载 ...

  6. js中setTimeout() 时间参数为0

    当看到下面 这种setTimeout 设置为0 写法的时候一脸懵逼,完全没用过. var fuc = [1,2,3]; for(var i in fuc){ setTimeout(function() ...

  7. 树莓派做coolpy服务器

    安装前需要了解的 1. coolpy是一个基于NodeJS的物联网平台(官网http://icoolpy.com). 注:国内物联网平台有乐联网,yeelink等,但只有coolpy是开源的. 2. ...

  8. 理解java关键字Synchronized(学习笔记)

    之前学习了线程的一些相关知识,今天系统的总结下来 目录 1. Java对象在堆内存中的存储结构 2. Monitor管程 3. synchronized锁的状态变换以及优化 4. synchroniz ...

  9. 同时使用antd和css module

    同时编译antd和css module,需要设置两次less识别. { test: /\.less$/, exclude: path.resolve(__dirname, './node_module ...

  10. Redis自学笔记:4.4进阶-消息通知

    4.4消息通知 4.4.1任务队列 传递任务的队列.与任务队列进行交互的实体有两类,一类是生产者,一类是消费者. 生产者将需要处理的任务放入任务队列中,二消费者不断从任务队列中读入任务 信息并执行. ...