十分钟看懂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 ...
-
参数类别
参数共有五种
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
参考: