10分钟学Python:极简Python教程

这是一篇极简Python教程,简单到谈不上是教程,更类似Python知识点的备忘或注记,力图在10分钟之内让你明白Python的基本概念,仅仅带你入门,不做深入讨论。

本文适用于Python 3。话不多说,直接入题。

【语言特性】

Python是强类型的语言:对变量只能执行当前类型定义的操作。

支持动态及隐式变量声明:不需要显式声明变量的类型,可以更改变量指向的对象从而改变其类型。

Python变量名大小写敏感:var和VAR是两个不同的变量。

Python是面向对象的:Python中一切皆为对象。

【获得帮助】

在Python解释器中可以随时获取帮助信息。

help(<object>) 可以知道对象是怎么工作的;

dir(<object>) 可以获取对象包含的属性和方法;

<object>.__doc__ 可以显示对象的文档字符串。

>> help(5)Help on int object:(...)
>>> dir(5)['__abs__', '__add__', ...]
>>> abs.__doc__ Return the absolute value of the argument.

【语法规则】

Python中的语句不含结束符(不像c/c++那样以分号结尾)。

通过缩进定义一个代码块:以缩进开始,以回缩结束。语句末尾使用冒号(:)开始一个代码块。

单行注释以#开头,通过多行字符串(''' blabla ''')定义多行注释。

等号(=)用于给变量赋值(实际上是将对象绑定到一个变量名,也即变量名是对象的引用),双等号(==)用于相等判断。

+=和-=操作符用于对变量指向递增和递减操作,这两个操作符适用于多种数据类型,包括字符串。

可在一行代码中同时操作多个变量。

#变量赋值与递增递减>>> myvar = 3>>> myvar += 2>>> myvar5
>>> myvar -= 1>>> myvar4
#多行注释"""This is a multiline comment.The following lines concatenate the two strings."""#使用+=进行字符串连接>>> mystring = "Hello">>> mystring += " world.">>> print(mystring)Hello world.
# 同一行代码中操作连个变量:交换其值.# 注意,这两个变量非同一类型。这里的交换实际上分别构造了两个新对象,然后将其绑定到原来的变量名>>> myvar, mystring = mystring, myvar

【数据结构】

Python内置多种数据结构:list、tuple、set和dict。

list类似一维数组(支持list嵌套),dict是关联数组,tuple为不可变的list。这三个数据结构可以混合存储各种类型的数据。

Python“数组”下标起始为0,支持负数。负值表示从末尾开始索引,-1代表最后一个元素。

Python变量也可以指向函数。

#list,混合多种类型数据,支持嵌套>>> sample = [1, ["another", "list"], ("a", "tuple")]
#通过下标访问list>>> mylist = ["List item 1", 2, 3.14]>>> mylist[0] = "List item 1 again" # We're changing the item.>>> mylist[-1] = 3.21 # Here, we refer to the last item.
#dict及其访问>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}>>> mydict["pi"] = 3.15 # This is how you change dictionary values.
#tuple>>> mytuple = (1, 2, 3)
#指向函数的变量>>> myfunction = len>>> print(myfunction(mylist))3

可以使用分号(:)访问指定范围的数组元素。

这种方式称为切片,用法为:

array[startIndex, endIndex, step]

startIndex为起始元素索引,endIndex为结束元素索引,

step为步长(默认为1)。

endIndex所在的元素并不包含在切片结果中,因此,

[,,]记法相当于数学中的左闭右开[)。

>>> mylist = ["List item 1", 2, 3.14]#访问所有元素>>> print(mylist[:])['List item 1', 2, 3.1400000000000001]#索引为整数>>> print(mylist[0:2])['List item 1', 2]#索引为负数>>> print(mylist[-3:-1])['List item 1', 2]>>> print(mylist[1:])[2, 3.14]
# 步长为2>>> print(mylist[::2])['List item 1', 3.14]

【字符串】

Python中的单行字符串是引号包含的一串字符,可以使用单引号或双引号。这两种引号可以互相包含,但必须成对使用。比如:'He said "hello"'。

Python支持多行字符串,通过三引号(‘’‘blabla‘’‘’)来定义。

Python字符串编码方式为Unicode。

Python支持以b开头的字节字符串,如:b'Hello \xce\xb1'。

Python支持使用以下方法对字符串进行格式化:

  • %:                 '%type_of_var' % (var)

  • str.format:    '{}'.format(var)

  • f-strings:       f‘{var}’

#%>>> print("Name: %s\Number: %s\String: %s" % (myclass.name, 3, 3 * "-"))
Name: StavrosNumber: 3String: ---
#多行字符串strString = """This isa multilinestring."""
# WARNING: Watch out for the trailing s in "%(key)s".>>> print("This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"})This is a test.
#str.format>>> name = "Stavros">>> "Hello, {}!".format(name)Hello, Stavros!
#f-strings>>> print(f"Hello, {name}!")Hello, Stavros!

【流程控制】

Python中流程控制语句包含if、for和while。if用于选择分支,for用于迭代。

可以使用range(<number>)获得1个数字序列。

>>> print(range(10))range(0, 10)>>> rangelist = list(range(10))>>> print(rangelist)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in range(10): if number in (3, 4, 7, 9): break else: continue
if rangelist[1] == 2: print("The second item (lists are 0-based) is 2")elif rangelist[1] == 3: print("The second item (lists are 0-based) is 3")else: print("Dunno")
while rangelist[1] == 1:    print("We are trapped in an infinite loop!")

【函数】

使用def来定义一个函数。函数可带有若干参数,带有默认值的参数称为可选参数,需要位于必选参数之后。

函数可以通过返回tuple的方式来返回多个值,使用tuple解压方法可以获得这些返回值。

Python支持匿名函数(lambda),这些函数通常只包含单条语句,用在一些简单的计算场景。

Python参数以引用方式进行传递,但是如果参数是不可变类型(tuple、int、string等),函数内部对这些参数的修改不会影响到它们原来的值。

#匿名函数funcvar = lambda x: x + 1>>> print(funcvar(1))2
# an_int和a_string是可选参数,它们带有默认值。#这里,an_int和a_string都是不可变类型,函数内部对其赋值,并不影响调用者环境里的原值def passing_example(a_list, an_int=2, a_string="A default string"): a_list.append("A new item") an_int = 4 return a_list, an_int, a_string
>>> my_list = [1, 2, 3]>>> my_int = 10>>> print(passing_example(my_list, my_int))#这里,an_int的输出值为4([1, 2, 3, 'A new item'], 4, "A default string")>>> my_list[1, 2, 3, 'A new item']>>> my_int#my_int仍保持原值10

【类】

通过关键字class来定义一个类,实现数据和代码的封装。

类中私有变量和私有方法可通过下划线(_)前缀的方式进行声明。比如:_m_var。

#类的定义class MyClass(object): #定义一个类变量,common为所有实例共享 common = 10 #初始化函数 def __init__(self): #通过self定义成员变量,每个实例拥有自己的变量 self.myvariable = 3 #成员函数 def myfunction(self, arg1, arg2): return self.myvariable
# This is the class instantiation
#定义一个实例>>> classinstance = MyClass()>>> classinstance.myfunction(1, 2)3
>>> classinstance2 = MyClass()#两个实例中共享一个common变量>>> classinstance.common10>>> classinstance2.common10
# 通过类名修改共享变量>>> MyClass.common = 30>>> classinstance.common30>>> classinstance2.common30
# 通过实例名修改类变量时,实例中的共享变量被绑定到新的对象上>>> classinstance.common = 10# 不再影响到其他实例>>> classinstance.common10>>> classinstance2.common30#也不再受原共享变量的影响>>> MyClass.common = 50>>> classinstance.common10>>> classinstance2.common50
#继承class OtherClass(MyClass): def __init__(self, arg1): self.myvariable = 3 print(arg1)
>>> classinstance = OtherClass("hello")hello>>> classinstance.myfunction(1, 2)3
# 可以动态给实例(而非类)增加成员。这并非良好的设计风格。>>> classinstance.test = 10>>> classinstance.test10

Python类支持有限的多重继承:

class OtherClass(MyClass1, MyClass2, MyClassN)

【异常处理】

通过try-except代码块处理异常。

def some_function(): try: 10 / 0 except ZeroDivisionError: #捕获异常 print("Oops, invalid.") else: #无异常 pass finally: # 无论何时try代码块都最终会执行到这里 print("We're done with that.")
>>> some_function()Oops, invalid.We're done with that.

【模块导入】

可通过import来导入外部模块,也可以通过from ... import ...来导入模块中的变量或方法。

import randomfrom time import clock
randomint = random.randint(1, 100)>>> print(randomint)64

【文件I/O】

Python包含众多的内置库。比如,可以使用pickle完成对象序列化到文件的操作。

import pickle#将list序列化到文件mylist = ["This", "is", 4, 13327]myfile = open(r"C:\\binary.dat", "wb")pickle.dump(mylist, myfile)myfile.close()
#写文件myfile = open(r"C:\\text.txt", "w")myfile.write("This is a sample string")myfile.close()
#读文件myfile = open(r"C:\\text.txt")>>> print(myfile.read())'This is a sample string'myfile.close()
#从文件读出listmyfile = open(r"C:\\binary.dat", "rb")loadedlist = pickle.load(myfile)myfile.close()>>> print(loadedlist)['This', 'is', 4, 13327]
(0)

相关推荐

  • 30 个 Python 的最佳实践、小贴士和技巧

    编辑:技术君 | 来源:CSDN(ID:CSDNnews) 作者 | Erik-Jan van Baaren 正文 作者 | Erik-Jan van Baaren 译者 | 弯月,责编 | 屠敏 出 ...

  • 面试题-python 什么是迭代器?

    前言 python 里面有 3 大神器:迭代器,生成器,装饰器.在了解迭代器之前,需弄清楚2个概念: 1.什么是迭代 2.什么是可迭代对象 迭代 如果给定一个list或tuple,我们可以通过for循 ...

  • 比Python更牛的语言有吗?看我用元类(metaclass)花式创建Python类

    Python类的定义再简单不过了.不过你有想过动态定义一个Python类吗?What?动态定义,是动态解析Python代码吗?不,这仍然是静态定义.我是说,干预类的创建过程,在类的创建过程中,对类中的 ...

  • 21位词人,27首巅峰宋词,10分钟看完极简宋词史

    宋词,是中国文学史上的一颗璀璨明珠,与唐诗并称双绝. 两宋时期,婉约派.豪放派两大风格流派交相辉映,李煜.柳永.王安石.苏轼.李清照.辛弃疾等词人不断丰富着宋词的形式.风格和内容,成就了宋词之美. 隐 ...

  • 这25条极简Python代码,你还不知道

    GitChat 3月3日 以下文章来源于法纳斯特 ,作者小F 作者 | 小F 来源 | 法纳斯特 自从我用Python编写第一行代码以来,就被它的简单性.出色的可读性和特别流行的一行代码所吸引. 下面 ...

  • 30段极简Python代码:这些小技巧你都Get了么

    数学算法俱乐部 日期 : 2021年06月14日 正文共 :3367字 来源 : 机器之心 学 Python 怎样才最快?当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务 ...

  • 30个极简Python代码,拿走就能用!

    最码农 2月28日 ‍ 作者丨Fatos Morina 来源丨Python 技术 编辑丨极市平台 学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则. 本文是 30 个 ...

  • 30个极简Python代码,拿走即用

    小白带你学编程 今天 学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python ...

  • ​这25条极简Python代码,你还不知道

    人工智能头条 1周前 以下文章来源于法纳斯特 ,作者小F 法纳斯特分享学习Python爬虫.数据分析.数据挖掘的点滴. 作者 | 小F 来源 | 法纳斯特 自从我用Python编写第一行代码以来,就被 ...

  • 学用系列|“飞书”文档协作团队极简上手教程

    胖胖老师近期分享的"飞书"协作文档应用,引起不少小伙伴的兴趣,纷纷询问如何才能构建"飞书"文档协作团队,今天胖胖老师就通过图文方式展现可能是最简的飞书文档协作团 ...

  • 30 个极简Python代码,拿走即用(真干货)

    学Python怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是30个极简任务,初学者可以尝试着自己实现:本文同样也是 30段代码,Python 开发者也可以看看是不是有没想到的 ...

  • 9个Python极简代码,拿走即用

    今天小编给大家整理了9个基础代码,新入门的Python程序员可以试着敲一下.