python杂物论

1.

num = 1,2,3,4,18
_,_,_,_,age = num
print(age)

 ' _ ' 不取值,目的是取出age

2.字典中不可变类型(元组,字符,浮点,整型)可以作为键,可变类型(列表)不能作为键

#元组在字典中可以当作key使用,而列表不行
atuple = 'username',
adict = {atuple:'知了'}
print(adict)

3.字典中键不能重复,如果重复,后面的键值会覆盖前面同名的键值

4.函数的位置参数和关键字参数的理解

#1.
#def add(a,b,**kwargs):
    result = a+b
    if kwargs.get('is_print'):
        print(result)
    else:
        pass
#add(1,2,is_print=True)


#2.
#def add_1(a,b,*args,**kwargs):
#    print(a,b,args,kwargs)
#add_1(1,2,3,4,k=2)
#缺省的关键字参数(**kwargs)必须放在缺省的位置参数(*args)后面


# 3.
# 将一个援助解包成位置参数传递进去
# 在调用这个函数的时候,可以将一个元组前面加一个*的语法,来将一个元组
# 解包,然后将里面值传递进去
#def add_2(*args):
#    print(args)
#a_tuple = 1,2
#add_2(*a_tuple)

# 4.
# 将字典解包成关键字参数传递给函数
# 在调用这个函数的时候,可以将一个字典前面加**的语法
#def add_3(a,b,**kwargs):
#    print(kwargs)
#add_3(1,2,**{'c':3,'d':4})

5.

#所有参数的顺序总结:
# 1.普通固定参数
# 2.带有默认值的参数
# 3.缺省的位置参数
# 4.缺省的关键字参数
#def add(a,b=10,*args,**kwargs):

6.

#global的使用,在函数内修改全局变量的指向,比如USERNAME在全局中指向字符串'zhangchao' 
#在函数在却使用global 让USERNAME的指向可以更改为整型66
USERNAME = 'zhangchao'
def my_info():
    global USERNAME
    USERNAME = 66
    print('i am %s.'% USERNAME)
my_info()
print(USERNAME)

 7.sort函数的高级应用

# sort 函数reverse参数
#a = [1,2,5,9,3,4,7]
#a.sort(reverse = True)
#print(a)


# sort 函数key参数    key 是一个函数
#函数也可以当作参数传递到其他函数中
#a = [{'username':'charlie','age':25},
#     {'username':'zhangchao','age':20}]
#def sort_key(x):
#    return x['age']  #以age来排序
#a.sort(key=sort_key)
#print(a)

8.函数式编程

#from functools import reduce
#a = [1,2,3,4,5,6]
#filter 判断函数是返回true还是false 返回true 留下 返回false 去除
#函数式编程练习1
#print(list(filter(lambda x:x>=3,a)))

#函数式编程练习2
#map 是将后面的序列都执行一边前面的函数 保留执行值
#print(list(map(lambda x:x*10,a)))

#函数式编程练习3
#reduce 是将序列的中的值的前两个返回结果保留为x
#使用reduce前必须用 from functools import reduce
# 比如(((((1+2)+3)+4)+5)+6)
#print(reduce(lambda x,y:x*y,a))

9.文件r+ w+ a+

#重点注意指针的位置

#r+   r的基因 读到那指针就在那
#fp = open('xxx.txt','r+')
#fp.write('123213')
#fp.close()

# w+  w的基因(用空文件替换原文件,之后再写)
#fp = open('xxx.txt','w+')
#fp.write('hello')
#fp.seek(0,0)
#print(fp.read())
#fp.close()

# a+ 追加和读的方式打开
#fp = open('xxx.txt','a+')
#fp.write(',zhiliao')
#fp.close()

#要学会运用fp.seek(x,x) 改变指针位置

#readline 按行读取 包括行末尾的\n 

#readlines 读取所有行的数据 包括行末\n

9.文件拷贝的简洁代码

#简洁文件拷贝
with open('xxx.txt','r') as fp:
    with open('xxx[copy].txt','w') as fp_copy:
        for line in fp:
            fp_copy.write(line)

10.调用父类的方法,用super函数。

super的用法:在子类中用 super(子类名,self).方法名(参数)

class Person(object):

    def __init__(self,name,age):
        self.name = name
        self.age = age

    def eat(self):
        print('人在吃饭')

class Student(Person):

    def __init__(self,name,age):
        super(Student,self).__init__(name,age)

    def eat(self):
        print('学生在吃饭')

    def greet(self):
        print(self.name,self.age)

s = Student('zhangchao',19)
print(s.greet())

11.一个子类有多个父类,并且这些父类有相同的方法,如果你想继承指定的一个父类的方法,

class Lv(object):
    def eat(self):
        print('在吃麦秆')

class Ma(object):
    def eat(self):
        print('在吃草')

class Luozi(Lv,Ma):
    def eat(self):
        Ma.eat(self)
        print('骡子在吃稻谷')
    pass

lz = Luozi()
print(lz.eat())

12.子类不能继承父类的私有属性和方法

13.包中__init__.py中__all__的作用,以及模块中__all__的用法

例如文件 sound/effects/__init__.py 可能包含如下代码

__all__ = ["echo", "surround", "reverse"]

这意味这 from sound.effects import * 将导入 sound 中这几个名字的子模块.如果__init__.py 没有__all__ 代表包中的模块都没有导入,都不能使用

对模块的用法也是大同小异,在一个模块中如果用 __all__ = ["a", "student", "person"] 代表导入这个模块的时候,只能用这个模块中的 a , student , person 如果没有__all__代表都可以使用

14.模块sys 的方法 modules 是用来判断一个模块是否导入具体用法如下:

# 测试代码

import hello
import sys
print(type(sys.modules))
is_in_modules = 'hello' in sys.modules
print(is_in_modules)
import hello

#导入的模块代码
gz = 'zhiliao'
def hello():
    print('hello')
class Person(object):
    def __init__(self):
        print('person init method')
hello()
print(gz)
Person()

#输出结果
hello
zhiliao
person init method
<class 'dict'>
True

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值