十分钟看懂python3语言特性

十分钟看懂python3语言特性

看了王垠的《如何掌握所有程序语言》,感触甚深。如果说程序语言有其通用规律的话,那就是语言特性,也就是这些语言的通用概念。这些概念的具体语法的形式可能都不一样,但是所内涵的功能是一致的,比如英语中的bird和汉语中,其实指的都是同一种事物,关键是它们怎么运作的,而不是它们的形式是什么。

掌握语言特性,一开始要掌握最基本、最简单的概念和用法,然后由简单到复杂。不是让你从头到尾的学,而是先掌握框架,再逐渐丰富。

下面,尝试写出python的语言特性。

一、字符串和数

1.字符串

所有在单引号‘ ’、双引号“ ”、三引号‘’‘ ’‘’“”“ ”“”里面的单词、句子和数字等都是字符串。其中三个引号可以换行。

‘good’

'''123
456'''

2.数字

数字不用加引号,包括整数,浮点数(带小数点的数和科学计数法的数)和复数。

1

3.14156

10E-10

(1+2j)

二、变量

字符串、数、函数、数据结构、类、类的属性等对象通过 = 赋值给变量。

a=55

b='good'

c=[1, 2, 3]

变量分为公共变量,特殊变量和私有变量.

1.公共变量。名称前后不带_,可以正常使用。

2.特殊变量。名称前后带_,一般在Python里有特殊用途,如

_main_

_name_

3.私有变量。名称前带_,不应该被直接引用。

三、算术运算

1.加减乘除,大于小于等于,变成二进制位移,以及二进制求同求异。

2.优先级跟数学算术一样。

3.字符串也可以进行算数运算

'abc'*3

四、数据结构

数据结构,Data Structures,就是储存数据的容器。数据包括字符串和数等对象。

四种数据结构:

1.列表[list],可以增删修改。

2.元组(tuple),不能修改。

3.字典,dict,格式如{key:value},可以增删修改。

4.集合,{set },储存key,不储存value,可以增删。

五、控制结构

1.if

如果...那么。

if ... :
   代码块
elif ...:
   代码块
else:
   代码块

2.while

如果是TRUE,那么执行下面代码。

while True:
    代码块

3.for

for ....in 循环,可迭代出(就是一个个取出)列表、元组、字典和字符串等对象里的元素。

for n in [1,2,3]:
    print(n)

4.break和continue

break和continue用在 if,while和for里面。

break是停止所有循环,continue是停止执行本次循环中continue下面的语句,继续执行下个循环。

六、函数定义

python有内置函数和自定义函数。内置函数是python定义好的,知道名称就可以直接使用,自定义函数就是用def去定义。

1.定义一个函数,def

def 函数名(参数):
    代码块
    return ...
  1. 参数类别

    参数共有五种

def 函数名(位置参数,默认参数,*可变参数,**关键字参数,命名关键字参数):
    代码块
    return 

(1)位置参数

放在函数名称的( )里,且不带*,也不在 *参数 后的参数。

举例

def add(x):
    return x*x  

这个x就是位置参数

(2)默认参数

在函数名称后面的( )里,给参数赋值的参数。

举例

def add(n,k=2):
    reutrn n+k

add(4)  #只需要给n赋值即可

这里面的k就是默认参数。

(3)可变参数

可变参数,是指传入参数的个数可以变化,从0到任意个参数,均可。

形式为

def  函数名称(*可变参数):
    代码块

举例

def calc(*n):
    sun=0
    for x in n:
        sum=sum+x
    return sum

calc(1,2)

num=[1,2,3]  #如果传入的是个列表,则在列表名称前面加上*
calc(*num)

num=(1,2,3)#如果传入的是个元组,则在元组名称前面加上*
calc(*num)

(4)关键字参数

关键字参数,是指参数名称的个数,可变化,可以放一个参数名称到任意个参数名称。这些参数名称会自动组成一个字典。

形式为

def 函数名称(**关键字参数):
    代码块

举例

def add(**kw):
    print(kw)

add(num1=1,num2=2)  #必须写成  参数名称=对象 的形式。

#结果显示如下
{'num1':1,'num2'=2}

(5)命名关键字参数

命名关键字参数限制关键字参数名称的个数。有两种形式

  • 一种是在*后面的参数
def add(*,命名关键字参数名称1,命名关键字参数名称2)

举例如下:

def add(*,flower,tree):
    print(flower,tree)

add(flower='rose',tree='apple')

#结果显示
rose apple
  • 一种是在 *可变参数 后面的参数
def add(*可变参数,命名关键字参数)

举例如下:

def add(*person,flower,tree):
    print(person,flower,tree)

country=['China','America']
add(*country,flower='rose',tree='apple')

#结果显示如下
('China', 'America') rose apple

七、函数调用

函数调用格式如下

(1)变量=函数名称(参数 )

a=abs(-5) #abs是求绝对值的内置函数。

(2)变量=函数名称

​ 变量(参数)

a=abs
a(-5)

八、递归

递归就是函数的套用。就是函数里套用一个函数。

使用方法:

def 函数(参数):

​ 代码块

​ return 函数(参数)

举例,求1+2+3+...+(n-1)+n的和

def fact(n):
    if n==1:
        return 1
    return n*fact(n-1)  

九、类型推导

1.推导式

推导式,英文名称Comprehensions,又称生成式。类型有三种,列表推导式,字典推导式和集合推导式,三种方式的语法结构都差不多。

[关于n的表达式 for n in collection if 条件]

举例如下

[x+x for x in range(1,10)]
[n+n for n in range(1,20) if n%2==1]
{ key_expr: value_expr for value in collection if condition }
{ expr for value in collection if condition }

2.生成器

生成器,generator。可以实现一边循环一遍计算,一次生成一个数。

生成器有两种语法结构

(1)把列表生成式的[ ] 改成( )即可

举例

g=(x+x for x in range(10))

next(g) #可以不断成数字

for n in g: #可以全部打出来
    print(n)

(2)把函数里的print 改成 yield即可。

举例

def add(n):
    yield n

next(add(5))

十、lambda函数

lambda,又称匿名函数。语法结构为:

lambda x:表达式

举例如下

a=lambda x:x*x
a(5)

十一、面向对象——class

类,即class,语法形式为

class 类名称(父类名称): #如果没有父类名称,就写object
    pass

参考:

1.Python中的推导式使用详解

2.廖雪峰的Python教程

3.Python官方指导手册

你可能感兴趣的:(十分钟看懂python3语言特性)