py基础语法
Posted 哎哟~不错哦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py基础语法相关的知识,希望对你有一定的参考价值。
py基础语法概览,方便自己查看,来源于菜鸟教程,详细教程请参考 http://www.runoob.com/python3/python3-tutorial.html
基础语法
注释
单行注释:注释以 # 开头
多行注释: ‘‘‘开头‘‘‘结尾,或者使用"""
行与缩进
缩进来表示代码块
同一个代码块的语句必须包含相同的缩进空格数
实例如下:
if true:
print ("True")
else:
print ("False")
多行语句
使用反斜杠(\)来实现多行语句,例如:
total = item_one + \
item_two + \
也可以使用 """...""" 或者 ‘‘‘...‘‘‘ 跨越多行。
import 与 from...import
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数, 格式为: from somemodule import somefunction
从某个模块中导入多个函数, 格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入, 格式为: from somemodule import *
数据类型
标准数据类型
Number : int、float、bool、complex(复数)
String
List
Tuple
Sets
Dictionary
字符串
字符串是不可变的。
python中单引号和双引号使用完全相同。
使用三引号(‘‘‘或""")可以指定一个多行字符串。
转义符 ‘\‘
自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
索引值以 0 为开始值,-1 为从末尾的开始位置。加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数
操作符
* 乘法
/ 除法,得到一个浮点数
// 除法,得到一个整数
...
in not in 成员运算符
is is not 身份运算符
not or and 逻辑运算符
List[]
列表是写在方括号([])之间、用逗号分隔开的元素列表。
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号(+)是列表连接运算符,星号(*)是重复操作。
列表中的元素是可以改变的
Tuple()
元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开。
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号(+)是列表连接运算符
Set{}
集合(set)是一个无序不重复元素的序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
Dictionary{}
是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
控制语句
if
if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3
while
while 判断条件: <statements> else <statements>
for
for <variable> in <sequence>: <statements> else: <statements>
break、continue
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
迭代器
it = iter(list) # iter()创建迭代器对象 print (next(it)) # next()输出迭代器的下一个元素
生成器
使用了 yield 的函数被称为生成器
生成器是一个返回迭代器的函数,只能用于迭代操作。
函数
定义函数
以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
函数内容以冒号起始,并且缩进
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
参数传递的不可变类型是按值传递(不会改变传递变量本身),可变参数传递是按引用传递(会改变参数本身)
def 函数名(参数列表): 函数体
匿名函数
使用 lambda 来创建匿名函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression
变量作用域
L (Local) 局部作用域
E (Enclosing) 闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域
模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块( if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这这些语句内定义的变量,外部也可以访问
global 和 nonlocal关键字: global定义的变量为全局的, nonlocal定义的变量为enclosing 作用域
IO&File
读取键盘输入
str = input("请输入:");
读和写文件
open(filename, mode) 将会返回一个 file 对象,
filename 变量是一个包含了你要访问的文件名称的字符串值
mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
eg:
f = open("/tmp/foo.txt", "w") #打开一个文件 f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" ) f.close() #关闭打开的文件
pickle模块
实现了基本的数据序列和反序列化
pickle.dump(obj, file, [,protocol])
异常
try except finally
try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ") finally: print("")
raise
抛出异常
with
预定义的清理行为,
eg:
with open("myfile.txt") as f: for line in f: print(line, end="")
自定义异常
异常应该继承自 Exception 类,或者直接继承,或者间接继承,例如:
class MyError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value)
面向对象
puthon的面向对象
类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。
实例化
x = MyClass()
引用实例中的成员
x.age
构造函数
def __init__(self): #self代表该类的实例对象 statement
私有成员
类的私有属性
_private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的私有方法
_private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
继承
class DerivedClassName(modname.BaseClassName): #modname表示模块名
以上是关于py基础语法的主要内容,如果未能解决你的问题,请参考以下文章