less than 1 minute read

* Python语法
* Python新增语法(与C/C++不同的)
* Python函数
* 简单Python练习

备注 每日一更 +代表更新完成。-为待续 先占个坑

Python语法

众所周知,python是个动态类型的语言。意味着,你可以不用去声明变量类型就去使用它,但是一定要记住,python是一个强类型的语言,不用声明变量类型,不是所该语言不区分变量类型,而是语言本身在底层将转换替你做好了。 所以在面对”123” + “3”和 123 + 3 时,你还是需要手工去确认它的类型。 其他的函数细节直接help可以去查询相关的函数细节。 对于python所提供的相对序列的操作相较C或者C++更为直观。可以讲python的这些数据结构理解为一个void* 的变长数据也好,或者一个打包好的object也好。(其实往往不需要去关心这些的内部细节)

闭包

闭包就是能够读取其他函数内部变量的函数。创建闭包的三点:(援引自网络)

  • 闭包函数必须有内嵌函数
  • 内嵌函数需要引用该嵌套函数上一级namespace中的变量
  • 闭包函数必须返回内嵌函数

list

相比较来说,list,以[]包括的元素,可以类比成C++中的vector,但是内部的元素可以是任意的类型,相比C++必须在vector中确定明确的数据类型,更加的便利和可读,能够实现插入,删除,更改的操作。同时也可以支持C风格的下标访问。

特别的,在使用help时,内置函数的说明存在相互的包含关系,比如在list中的index,单独使用help(index())无法查询得到,需要使用

help(list)

来查询到相应的帮助文件。

特别的,复制是浅复制(对一个的更改后,复制的内容也会更改)

a = [1,2,3]
b = a
b[1] = 100

# b [1, 100, 3]
# a [1, 100, 3]

tuple

与list相同,但是其中的数据不可更改,同时,list 和tuple可以相互转换。 特别的python可以假装返回多个返回值。比如如下代码:

def fun():
    return 1,2,3
f = fun()
# (1,2,3)
# It will automatic change to tuple.

Python新增语法(与C/C++不同的)

语法

分支语句

不同于C语言的三目运算符。python使用如下的语法表示三目运算:

value = x if boolStatus else y
# boolStatus can be "x > y" or anything you want

如果boolStatus为真,则value的值为x,反之为y。

foreach 循环

类比C#中的foreach,但是python中只需要使用for就可以。

for i in listArray:
    # something you want to do in the loops

函数别名

一个函数结尾必须要用(),如果没有(),相应的返回值就会成为这个函数的别名。 换句话说,value = object.fun这样的语法,相当于讲fun这个函数起了一个别名叫做value,而不是所期望的获取这个函数的返回值。特别的,python可以对无返回值的函数对其他值进行赋值,(结果为none)

c = print()
a = print

c的值为none类型为NoneType
a是一个函数

字符串

转义字符串

可以通过将字符串前置r的形式将一段内容为地址的字符串转换成相应的增加转义字符的字符串。比如

r'C:\abc'

将转换为C:\\abc

大块字符串

三个引号的字符串可以在其中直接包含一整段文字。包括空行

str = '''字符串
字符串
字符串'''

将会被转换为'字符串\n字符串\n字符串'

格式化字符串

与C语言相似,可以通过%控制字符,对字符串进行格式上的设定,但是还是有不同的地方。python更为智能的可以对多个序列进行操作。可以实现如下代码:

'%c %c %c' % (97, 98, 99)
# 'a b c'
'%c is not %c' % (97, 98)
# 'b is not  c'

这样的书写方式更像是去除了第一个参数的sprintf函数。其中,字符串和序列中的%是表明这里字符串的%是相关的格式控制字符。格式化设置同C语言。

同时python还提供一种更类似于C#的格式控制。{},但是使用这种方式的时候,需要使用字符串的内置函数 format。 不过特别的,python还支持对替换位置命名。可以序号和命名同时出现,但是,序号不能出现在字符串的最后。

"{0} love {b}, {c}".format("i", c = "coding", b = "reading")
# 'i love reading, coding'

Python函数

range函数,可以自动产生一个序列,对于一个序列,python提供更为简单的初始化方式,比如,可以在初始化的时候设定步长,起始位置等参数。具体的细节也可以参见help函数。