十分钟看懂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官方指导手册

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,545评论 1 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,591评论 18 139
  • 产品管理是一项你可以通过实践来学习并提高的技能。成为一名好的产品经理应掌握以下几点核心技能。 1.保持敏锐。这可以...
    大象的印象阅读 13,268评论 0 42
  • 第一章 贺天看着飞机窗外渐渐泛白的天空,喝下了易拉罐里的最后一口啤酒。他不是没有钱去买那些昂贵的好酒,相反...
    门口墨鱼阅读 520评论 0 1
  • 那些生于60年代末期和70、80年代的大多已经步入婚姻,为人父母,他们的圈子似乎已经固定,他们的人生似乎已经没有波...
    生执念阅读 1,772评论 2 30