python基础学习

基本语法

注释:

单行:
# 单行
多行:
'''
第一行
第二行
'''

"""
第一行
第二行
"""

六种数据类型

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

type()或者isinstance()判断数据类型

del var_1,var_2 删除单个或多个对象

  1. number(数字)
    包括int,float,bool,complex(复数)四种

数值运算:

>>>5 + 4  # 加法

9

>>> 4.3 - 2 # 减法

2.3

>>> 3 * 7  # 乘法

21

>>> 2 / 4  # 除法,得到一个浮点数

0.5

>>> 2 // 4 # 除法,得到一个整数(整除)

0

>>> 17 % 3 # 取余 

2

>>> 2 ** 5 # 乘方

32
  1. string(字符串)
    用'或者"括起来,\转义特殊字符

+号:字符串连接符

*号:赋值当前字符串,紧跟的数字代表赋值次数

字符串索引:

索引:变量[下标] 从前往后:0n,从后往前-1-n

截取:变量[头下标:尾下标]

str = 'Runoob'

print (str)          # 输出字符串

print (str[0:-1])    # 输出第一个到倒数第二个的所有字符

print (str[0])       # 输出字符串第一个字符

print (str[2:5])     # 输出从第三个开始到第五个的字符

print (str[2:])      # 输出从第三个开始的后的所有字符

print (str * 2)      # 输出字符串两次

print (str + "TEST") # 连接字符串

print (r'Ru\noob')   # 加上r表示原样输出不转义

反斜杠()可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。

字符串中的元素不可变,比如不能这样赋值:str[1] = 'a'

  1. list(列表)

列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(嵌套)

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]

可以和字符串一样截取、索引和拼接,不同的是列表内的元素是可变的,可以进行赋值操作:list[1]='b'

删除一个元素:del list[2]

  1. tuple(元组)
    和列表类似,不同之处在于元素不可变,不能修改
tuple=('abcd', 786 , 2.23, 'runoob', 70.2 )

虽然元组不可修改,但可以包含可变的元素,比如列表。

特殊规则:

tup1 = ()    # 空元组

tup2 = (20,) # 一个元素,需要在元素后添加逗号
  1. set(集合)
    一个无序不重复元素的序列,
student = {'Tom', 'Jim', 'Mary'}

a = set('abcde')

b = set('bcdf')

print(a - b)     # a和b的差集 

print(a | b)     # a和b的并集

print(a & b)     # a和b的交集

print(a ^ b)     # a和b中不同时存在的元素

  1. dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

在同一个字典中,键(key)必须是唯一的。

定义:

dict = {}

dict['one'] = "1 - 菜鸟教程"

dict[2]     = "2 - 菜鸟工具"

tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

取值:

print (dict['one'])       # 输出键为 'one' 的值

print (dict[2])           # 输出键为 2 的值

print (tinydict)          # 输出完整的字典

print (tinydict.keys())   # 输出所有键

print (tinydict.values()) # 输出所有值
  • 类型转换

运算符
算数运算符:+、-、、/、%、*、//

比较运算符:==、!=、>、<、>=、<=

赋值运算符:=、+=、-=、=、.=、/=、%=、*=、//=

位运算符:&、|、^、~、<<、>>

逻辑运算符:and、or、not

成员运算符:in、not in

身份运算符:is、is not

if语句(没有switch)

if condition_1:

    statement_block_1

elif condition_2:

    statement_block_2

else:

    statement_block_3

while语句(没有do...while)

while condition:

    statement_block

while condition:

    statement_block1

else:

    statement_block2

for循环

for <variable> in <sequence>:

    <statements>

else:

    <statements>

break跳出循环

continue跳过当前循环剩余语句,继续下一轮循环

pass空语句

迭代器和生成器iter,yield

自定义函数

def 函数名(参数列表):

    函数体
  • python 函数的参数传递:
  1. 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

  2. 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

  3. 必需参数:

入参方式:test(123) 严格按照顺序匹配,不填会报错

  1. 关键字参数:

入参方式:test(name="123",sex="boy") 顺序可变,会自动识别

  1. 默认参数:

定义方式def test(name="123")

入参方式:test()

  1. 不定长参数

定义方式:

def test(a,*b,c) b以元组形式传入

def test(a,**b,c) b以字典形式传入

注:不定长参数后面的c参数一定要用关键字参数传入(c=X)。

匿名函数:

lambda [arg1 [,arg2,.....argn]]:expression

例:

# 可写函数说明

sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数

print ("相加后的值为 : ", sum( 10, 20 ))

return语句:退出函数并返回一个表达式。不带参数的return返回None

变量作用域

L (Local) 局部作用域

E (Enclosing) 闭包函数外的函数中

G (Global) 全局作用域

B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找

只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域

全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

当内部作用域想修改外部作用域的变量时,用global和nonlocal(嵌套作用域时使用)关键字

模块

可以理解为一个.py结尾的文件,里面定义了一些参数或方法供外部引用。

import module1,module2,...  引入整个文件

from module import func1,func2   引入部分方法

from module import *  引入全部

name属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。

内置函数dir()找到模块内定义的所有名称

一种管理 Python 模块命名空间的形式

目录只有包含一个叫做 init.py 的文件才会被认作是一个包

import sound.effects.echo

from sound.effects import echo

从一个包中导入*

init.py中配置参数:

__all__ = ['echo','reverse'];

输出

str()

print()

write()

format() zfill() ljust() rjust() center()等方法格式化输出

输入

input() 从键盘读入

open() 从文件读入

错误处理

try:

    f = open('myfile.txt')

    s = f.readline()

    i = int(s.strip())

except OSError as err:  //处理对应错误

    print("OS error: {0}".format(err))

except (TypeError,ValueError):  //可以同时处理多个

    print("Could not convert data to an integer.")

except:   //default错误

    print("Unexpected error:", sys.exc_info()[0])

    raise

else:  //放在最后面,没有发生任何错误时执行

    print("NO Error")

finally:  //无论如何都会执行的清理程序

    print("goodbye")

抛出一个异常

raise NameError('msg')

面向对象

定义类:

class Name:

    ....

类对象

变量/方法

init方法:实例化时自动调用

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self(可以自定义),代表类的实例。

class Test:

    def prt(self):

        print(self)

        print(self.__class__)

 

t = Test()

t.prt()

继承:

class DerivedClassName(BaseClassName1):

    ....

    

class DerivedClassName(moduleName.BaseClassName1):



class DerivedClassName(BaseClassName1,BaseClassName2):

若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法

子类可以重写父类的方法,super()方法用来调用父类的方法。

私有属性/私有方法:用__开头,只能在类内部调用

__privateattrs

def __privatemethod

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

推荐阅读更多精彩内容