Python基础学习手记

学习python快2个星期了,从刚开始看Learn Python the Hard Way开始,翘完前40例代码,后面的案例难度就大幅增加,于是转学小甲鱼的Python。目前刚看完前52集的基础篇,简单记录了些知识点。


1、member[1:4] #第2个元素到第三个元素,即member[1]、member[2]

2、列表操作:

list3.count(123) #计算列表中123出现的次数

list3.index(123) #索引列表中123第一次出现的位置

list3.index(123,3,7) #从3到7中索引123第一次出现的位置

list3.reverse() #列表反转

list3.sort() #从小到大排序

list3.sort(reverse(true))

3、字符串操作:

capitalize() #把字符串的第一个字符改为大写

casefold() #把整个字符串的所有字符改为小写

center(width) #将字符串居中,并使用空格填充至长度width的新字符串

count

endswith(sub[,start[,end]]) #检查字符串是否以sub字符串结束

expandtabs([tabsize=8]) #把字符串中的tab符号(\t)转换为空格,默认的空格数是tabsize=8

find (sub[,start[,end]) #检测sub是否包含在字符串中,返回索引值

index(sub,[,start[,end]])

join(sub) #以字符串作为分隔符,插入到sub中所有的字符之间

partition(sub) #找到子字符串sub,把字符串分成一个3元组

replace(old,new[,count])

rfind(sub,[,start[,end]]) #类似于find,从右开始查找

rstrip() #删除字符串末尾的空格

split() #字符串自动切片,默认为空格

strip([chars])#删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选

swapcase() #翻转字符串中的大小写

translate(table)

4、函数内嵌、闭包

def FunX(x):

  def FunY(y):

    return x*y

return FunY

调用: Funx(8)(5) ,输出为40.

i)如果希望在函数中修改全局变量,关键词:global

ii)在嵌套的函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字呢? 关键词: nonlocal


def outside():

  print('I am outside!')

  def inside():

    print ('I am inside!')

inside()  #会报错

正确调用:


def outside():

  print('I am outside!')

  def inside():

    print ('I am inside!')

  inside()

outside()

使用嵌套函数要注意一点就是作用域问题,inside()函数是内嵌在outside()函数中的,所以除了outside()可以调用,在外边或者别的函数体里是无法对其进行调用的

6、函数 lambda

EX:

g = lambda x :  2 * x  +  1
g(5)

7、内建函数bif(很多,不一一列举)
(1)filter ----过滤器

Ex: 过滤偶数

def odd(x):
    return x%2

temp = range(10)
show = filter(odd,temp)
list(show)
---------------------------------------------
list(filter(lambda x: x%2, range(10)))

(2)map ----映射

list(map(lambda x :x*2,range(10)))

8、函数zip

>>>list(zip([1,3,5,7,9],[2,4,6,8,10]))
[(1,2),(3,4),(5,6),(7,8),(9,10)]

函数map

>>>list(map(lambda x,y :[x,y],[1,3,5,7,9],[2,4,6,8,10]))
[[1,2],[3,4],[5,6],[7,8],[9,10]]

9、递归
hanoi、 fibonacci

# -*- coding: cp936 -*-
def hanoi(n,x,y,z):
    if n==1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y上
        print(x,'-->',z)#将最底下的最后一个盘子从x移动到z上
        hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上

n = int(input('请输入汉诺塔的数量:'))
hanoi(n,'X','Y','Z')

10、字典操作

popitem() #(随机)弹出,字典中元素没有顺序

setdefault() #Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

update :

#!/usr/bin/python3
dict = {'Name': 'Runoob', 'Age': 7}dict2 = {'Sex': 'female' }
dict.update(dict2)print ("更新字典 dict : ", dict)

更新字典 dict : {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}

fromkeys():

>>>dict1.fromkeys((1,2,3),'Number')
{1:'Number',2:'Number',3:'Number'}

获取字典的item\value\key :items()、values()、keys()

11、文件

r 以只读方式打开文件

w 写入

a 写入模式打开,若存在则末尾追加

x 如果已存在,打开将发生异常

b 二进制模式打开

t 以文本模式打开

  • 可读写模式

U 通用换行符支持

f.close() 关闭文件

f.read(size=-1) 从文件读取size个字符,当 未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回

f.readline() 以写入模式打开,如果文件存在则在末尾追加写入

f.write(str) 将字符串str写入文件

f.writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象

f.seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节

f.tell() 返回当前在文件中的位置

12、模块

os模块中关于文件/目录常用的函数使用方法

函数名 使用方法
getcwd() 返回当前工作目录

chdir(path) 改变工作目录

listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)

mkdir(path) 创建单层目录,如该目录已存在抛出异常

makedirs(path) 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b'和'E:\a\c'并不会冲突

remove(path) 删除文件

rmdir(path) 删除单层目录,如该目录非空则抛出异常

removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

rename(old, new) 将文件old重命名为new

system(command) 运行系统的shell命令

walk(top) 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])


以下是支持路径操作中常用到的一些定义,支持所有平台
os.curdir 指代当前目录('.')

os.pardir 指代上一级目录('..')

os.sep 输出操作系统特定的路径分隔符(Win下为'\',Linux下为'/')

os.linesep 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')

os.name 指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')


os.path模块中关于路径常用的函数使用方法

函数名 使用方法
basename(path) 去掉目录路径,单独返回文件名

dirname(path) 去掉文件名,单独返回目录路径

join(path1[, path2[, ...]]) 将path1, path2各部分组合成一个路径名

split(path) 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

splitext(path) 分离文件名与扩展名,返回(f_name, f_extension)元组

getsize(file) 返回指定文件的尺寸,单位是字节

getatime(file) 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

getctime(file) 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

getmtime(file) 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

以下为函数返回 True 或 False
exists(path) 判断指定路径(目录或文件)是否存在

isabs(path) 判断指定路径是否为绝对路径

isdir(path) 判断指定路径是否存在且是一个目录

isfile(path) 判断指定路径是否存在且是一个文件

islink(path) 判断指定路径是否存在且是一个符号链接

ismount(path) 判断指定路径是否存在且是一个挂载点

samefile(path1, paht2) 判断path1和path2两个路径是否指向同一个文件

13、pickle

将字符串、列表元组等以二进制形式写入

my_list = [123, 3.14, '小甲鱼', ['another list']]
pickle_file = open('my_list.pkl','wb')
pickle.dump(my_list,pickle_file)
pickle_file.close()
    
pickle_file = open('my_list.pkl','rb')
my_list2 =pickle.load (pickle_file)
print(my_list2)

14、 封装 继承 多态


单词解释:

class(类):告诉python去创建一个新类型。

object(对象):有两种意思,事物的基本类型,或者事物的实例化。

instance(实例):你通过python创建一个类所获得的。

def:用来在类中定义一个函数。

self:在一个类包含的函数中,self是一个用来访问实例或对象的变量。

inheritance:概念,表示一个类可以继承另一个类的特征,就像你和你的父母。

composition:概念,表示一个类可以包含其他类,就像汽车轮子。

attribute:类所拥有的特性,通常是变量。

is-a:惯用语,表示一个东西继承自另一个东西(a),像在“鲑鱼”是“鱼”。

has-a:惯用语,表示由其他事情或有一个特征(a),如“鲑鱼有嘴。”

短语解释

class X(Y):创建一个叫X的类,并继承Y。

class X(object): def init(self, J):类X有一个init方法,该方法有self和J两个参数。

class X(object): def M(self, J):类X有一个叫M的函数,该函数有self和J两个参数。

foo = X():给foo赋值为类X的一个实例。

foo.M(J):从foo里调用M函数,传递的参数为self和J。

foo.K = Q:从foo里调用K属性,并将其设置为Q。


15、init(self)
类似于构造函数

super() 用于继承所有父类的函数

super(父类,self).__init__()

组合

class Turtle:
    def__init__(self,x):
        self.num=x
class Fish:
    def __init__(self,x):
        self.num =x
class Pool:
    def __init__(self,x,y):
    self.turtle=Turtle(x)
    self.fish=Fish(y)

16、描述符(property的原理)

class Celsius:
    def __init__(self, value =26.0):
        self.value = float(value)

    def __get__(self,instance,owner):
        return self.value

    def __set__(self,instance,value):
        self.value = float(value)

class Fahrenheit:
    def __get__(self,instance,owner):
        return instance.cel*1.8+32

    def __set__(self,instance,value):
        instance.cel= (float(value)-32)/1.8

class Temperature:
    cel = Celsives()
    fah = Fahrenheit()

class Temperature:
    cel = Celsius()

17、可变长定制列表

class CountList(list):
    def __init__(self,*args):
        super(CountList,self).__init__(args)
        self.count = []
        for i in args:
            self.count.append(0)

    def __len__(self):
        return len(self.count)

    def __getitem__(self,key):
        self.count[key] += 1
        return super(CountList,self).__getitem__(key)

    def __setitem__(self,key,value):
        self.count[key] +=1
        super(CountList,self).__setitem__(key,value)

    def __delitem__(self,key):
        del self.count[key]
        super(CountList,self).__delitem__(key)

    def count(self,key):
        return self.count[key]

    def append(self,value):
        self.count.append(0)
        super(CountList,self).append(value)

    def pop(self, key=-1):
        del self.count[key]
        return super(CountList,self).pop(key)

    def remove(self,value):
        key = super(CountList,self).index(value)
        del self.count[key]
        super(CountList,self).remove(value)

    def insert(self,key,value):
        self.count.insert(key,0)
        super(CountList,self).insert(key,value)

    def clear(self):
        self.count.clear()
        super(CountList,self).clear()

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

推荐阅读更多精彩内容