Python入门之基础语法(一)

笔者花了三个多月的时间学了一把 Python,在学习过程中总是拿已习得的 Java 做对比,惊异于 Python 的简单与强大,决定后期定要继续深入学习 Python。现在以自己所学做一下总结。

关于 Python

官方对 Python 的介绍如下:

Python 是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能简单又有效地面向对象编程。
Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使其成为一种在多领域与绝大多数平台都能 进行脚本编写 与 应用快速开发工作 的理想语言。

Python 特色

  • 简单:具备伪代码的特质;
  • 易于学习:有一套极其简单的语法体系;
  • 自由且开放:是 FLOSS (自由/开放源代码软件) 成员之一;
  • 高级语言:不必考虑诸如程序应当如何使用内存等底层细节;
  • 跨平台性:由于其开源特性,已被移植到其它诸多平台;
  • 解释性:不需要像 C/C++ 语言将源代码最终编译成二进制码,只需要直接从源代码 运行 该程序。在程序内部,Python 会将源代码转换为字节码的中间形式,而后在转换为电脑所用的语言;
  • 面向对象:同时支持面向过程和面向对象编程;
  • 可扩展性:可将 C/C++ 程序运用于 Python 程序;
  • 可嵌入性:可在 C/C++ 程序中嵌入 Python,从而向你的程序用户提供 脚本 功能;
  • 丰富的库:Python 标准库规模庞大,还可以在 [Python库索引] 中发掘许多其它高质量的库。

Python 基础

以下将介绍下Python变量、基本数据类型、运算符、控制流。

变量

变量时标识符的一个例子。标识符命名规则:以字母或下划线( _ )开头,其余字母为数字、字符、下划线组成。

Python 中的变量具有这样几个特点:

  • 可以表示任意数据类型;
  • 用‘=’可将同一个变量反复赋值,并且可以是任意数据类型;

Python变量能指向任何类型变量,决定Python是一种动态语言。

动态语言 vs 静态语言:

  • 动态语言 - 变量本身类型不固定的语言,如 Python;
  • 静态语言 - 在定义变量时必须指定类型,并且赋值时类型不匹配会报错,如 Java .

Python 中变量分两种:

  • 局部变量:作用范围有限,如函数中声明的变量;
  • 全局变量:在程序的顶层赋值,不存在任何作用域,类或函数。用 global 修饰。
基本数据类型

Python 几种数据类型有整数、浮点数、字符串、布尔值和空值。这里不一一介绍,以一张导图说明各类型使用。


基本数据类型.png

这里重点说下 空值None 。Python 中 None 可以作为 if 条件语句,返回 False,其他非 None 的任何变量作为 if 条件语句,会返回 True。示例如下:

if None:
    print('False')
elif 'abc':
    print('True')
elif 2:
    print('True')       
运算符

以下列举几种常见的运算符,对于位移运算、位运算等这里不做说明。


运算符.png

这里重点说下 '*' 运算符,可以返回 字符串重复指定次数的结果,如:

print('ab' * 3) # ababab

Python 中也可以使用 变量 运算 = 表达式 这种结构,如:

a = a * 2    ->    a *= 2
控制流

Python 中有三种控制流语句——ifforwhile

控制流.png

这里重点说下 for...in.. 循环,能用于任何工作队列,常常使用内置的 range 方法生成一串数字列表,示例代码如下:

for x in range(1, 5):
    print(x, end = ' ')
# 打印结果:1 2 3 4  

Python 数据结构

Python 中有四种数据结构对象:list(列表), tuple(元组), dict(字典) 和 set(集合)。

list 列表

定义:Python 内置的一种数据类型列表,用 [] 表示。
特点:有序集合;随时可添加和删除元素;一种可变的数据类型。
常见用法:

  • list0 = ['Jane', 'June', 'July'] - 列表定义;
  • len(list0) - 获取列表元素个数;
  • list[index] - 用索引获取某个元素,越界抛异常,0表示第一个;
  • list[-index] - 用负索引获取倒数第index个元素,如最后一个元素用-1索引,越界抛异常;
  • list.insert(index, 'Jack') - 把元素插入到索引为 index 的位置;
  • list.pop(index) - 删除指定索引为 index 的元素;
  • del list[index] - 删除指定元素 list[index];
  • list.pop() - 删除末尾元素;
  • list[index] = 'val' - 给index位置元素赋值;
  • list0 = [] - 表示空数组;

Tips: list 中可以存放不通数据类型元素;其元素也可以是一个 list,如果便是一个二维数组形式。

示例代码如下:

animals = ['cat', 'dog', 'parrot', 'bird']
print('There are', len(animals), 'kind of animal')

print(animals[2])   # parrot
animals.insert(2, 'sheep')
print(animals)      # ['cat', 'dog', 'sheep', 'parrot', 'bird']

print('These animals are:', end = ' ') # 打印不换行
for animal in animals:
    print(animal, end = ' ')
# 打印:These animals are: cat dog parrot bird 

animals.sort() # 列表排序
print('Sorted list is', animals) # ['bird', 'cat', 'dog', 'parrot']

del animals[2] 
print(animas) # ['bird', 'cat', 'dog']  
tuple 元组

定义:也是 Python 内置的一种有序列表,用 () 表示。
特点:一旦初始化就不能改变。因为不可变性,所以代码更安全。
常见用法:

  • tuple0 = ('Cindy', 'Coral', 'Xss'):元素定义;
  • tuple0[index] - 获取元素;
  • tuple0 = () - 表示空元组;
  • tuple = (1, ) - 当元组中仅有一个元素,需要加逗号区别;Python 中会将 (1) 识别为 1 这个数字;

Tips:

  • 因不可修改性,所以没有 append(), insert() 以及赋值给某个某诉等修改元组的方法;
  • tuple = (1, 's', ['a', 'b']) 元组中也可存放不同类型数据。当有列表元素时,列表中的元素可以改变,但列表本身不能改变,如指向另一个列表。

示例代码如下:

animals = ('cat', 'dog', 'bird')
new_animal = ('sheep', )

new_animals = animals, new_animal 
print(new_animals) # (('cat', 'dog', 'bird'), ('sheep',))
print(new_animals[2][0]) # sheep

print(animals, 'sheep') # (('cat', 'dog', 'bird'), 'sheep')
dict 字典

定义:Python 内置字典,对应其它语言的 map,用 {} 表示。
特点:使用 key - value 键值对存储,具有极快的查找速度。
常见用法:

  • dict = {'Jane': 96, 'July': 85, 'Juce': 100} - 字典定义;
  • dict[key] - 获取key对应的元素值;;
  • dict[key] = 'value' - 给某个key对应的value赋值;
  • pop(key) - 删除一组键值对;

区别于list列表的几个点:
1)查找和插入的速度极快,不会随着 key的增加而变慢;list元素越多查找和插入时间越长;
2)dict 需要占用大量内存,内存浪费多;list占用空间小,浪费也很少。

Tips:

  • 一个 key 只对应一个 value,所以多次对一个key放入value,后面的值会覆盖前面的值;
  • 若 key 不存在,dict会报错: KeyError;判断key是否存在方法:
    • 通过 in 判断:exist = key in dict;
    • 通过 dict.get()方法判断:exist = (dict.get(key) == None)
  • dict 是无序的,其元素存放的顺序和 key 放入的顺序是无关的;
  • dict 的key必须是不可变对象,list是可变的不能作为key;通过key计算位置的算法称为 哈希算法。

示例代码如下:

student = {'s01': 'Amy', 's02': 'Cindy', 's03': 'Bob'}
print('s01 is', student['s01']))

for number, name in student.items():
    print('{} is Student {}'.format(number, name))

if 's01' in student:    # 判断某个key值是否存在用 in
    print('s01 is', student('s01'))

del student['s03'] # 删除一对键值对    
set 集合

定义:类似于 dict,也是一组无序 key 的集合。用 {} 表示。
特点:不存储 value,key也不能重复;创建一个 set,需要提供一个 list 作为输入集合。
常见用法:

  • set = set([1, 2, 2, 3]) - 定义,需要传入一个list,重复元素会自动被过滤,输出形式:{1, 2, 3}
  • set.add(key) - 添加元素到 set,可以添加重复元素,但是最终会被过滤;
  • set.remove(key) - 删除元素;
  • 两个set可以做数学意义上的交集、并集等操作,最后得到的也是 set;
    代码如下:
s1 = set([1, 2])
s2 = set([2, 3])
print(s1 & s2)  # {2}
print(s1 | s2)  # {1, 2, 3}

Tips: set 和 dict 的唯一区别是set没有存储对应的 value;同样不能存放可变对象。

Python 输入和输出

以一张图来展示输入和输出的使用说明:


输入和输出.png

示例代码:

in_str = input('Enter text: ')
print(in_str)

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

推荐阅读更多精彩内容

  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,700评论 0 1
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,681评论 0 5
  • 0. 序言 python 是一门脚本语言:封装性强,语法简洁,开发效率高,只用函数open就可以打开一个txt文件...
    付凯强阅读 1,226评论 0 5
  • 只是一片叶子 在风里,也在荒野里 白云看着它飘向远方 和风一起 只是一条小溪 在山里,也在海里 途径了十八处不一样...
    两千里阅读 333评论 0 0
  • 考驾照需知 考驾照并不是难于上青天很多人考不过大多是压力过大 考不过要重考要交钱如何如何 科目二科目三也就那么点需...
    写给盛夏的你阅读 200评论 0 0