Py字典、变量、参数、方法、模块、包

在第一天的时候提了一嘴字典,不过他的一些特性还有方法没有写,今天写一写
字典的元素是一组键值对
字典的键可以是int 、float、tuple、bool、str,但是不能是列表、字典,不过用时建议用str
字典的值可以是任何元素,包括列表、字典等
字典是没有下标的,去字典的值通过键来取,下面还是看代码

dict = {'键':'值','str':1,12:(1,3,5),3.14:[1,2,4],True:{'键':'值'},(1,24,4):True}

print(dict[12])#(1, 3, 5)  键位12对应的值

print(len(dict))#6  字典里面的元素个数

dict[12] = 'hello'#修改键位12对应的值

print(dict[12])#hello

dict['增加键位']='增加的值'#如果字典里面没有这个键位,则会直接增加这个键值对

print(dict)#{'键': '值', 'str': 1, 12: 'hello', 3.14: [1, 2, 4], True: {'键': '值'}, (1, 24, 4): True, '增加键位': '增加的值'}

del dict[3.14] #删除键位为3.14的键值对
print(dict)#{'键': '值', 'str': 1, 12: 'hello', True: {'键': '值'}, (1, 24, 4): True, '增加键位': '增加的值'}

print(dict.pop('键'))#删除键位为'键'的键值对,返回的的是这个键位对应的值    ‘值’
print(dict)#{'str': 1, 12: 'hello', True: {'键': '值'}, (1, 24, 4): True, '增加键位': '增加的值'}

print(dict.keys())#dict_keys(['str', 12, True, (1, 24, 4), '增加键位']),返回的是一个类列表
alist = list(dict.keys())#可以转换为列表
print(alist)

for one in dict:
    print(one)#遍历的是字典里的键位
    print(one,dict[one])#这样打印的才是键和值
    
print(dict.items())#这个是对字典本身的遍历,打印出来的是一个类列表,可以转换为列表
#dict_items([('键', '值'), ('str', 1), (12, (1, 3, 5)), (3.14, [1, 2, 4]), (True, {'键': '值'}), ((1, 24, 4), True)])

for one in dict.items():#打印的是键值对,以元组的方式打印出来
    print(one,type(one))#('键', '值')
    
for one ,a in dict.items():#
    print(one, a) #one是键位,a是值
    
a = {1:2,4:3}
b = {1:8,5:3}
a.update(b)#字典的更新,没有键值对的增加,键值对一致的不变,键值对不一致的更新
print(a)#{1: 8, 4: 3, 5: 3}

dict.clear()#清空字典
print(dict)#{}

以上是对字典的一些方法的总结,暂时就先这么多
下面说下变量,变量有全局变量和局部变量,还是看代码

a = 3#全局变量
def func(b):
    a = b#局部变量
    print(a)#2
    def func1(c):
        a = 5#局部变量
        print(a)#5
        def func2():
            global a#加上global成为全局变量
            print('***',a)#*** 3
        func2()
    func1(5)
print(a)#3
func(2)

下面说的是几种参数:缺省参数、可变数量参数、关键字可变数量参数

def func(a = 1,b = 3):#缺省参数,a和b 就是缺省参数,如果函数不传值,那么就默认参数为1和2,如果传值,就按传值走
    sum = a + b
    return sum
    
print(func())#4

print(func(5,8))#13  像print()函数也是缺省参数print(end = ''),不写end=默认换行,写的话,以写的值替换

def func(a ,*b ,c = 5):#'*'函数定义,默认封装成一个元组,是可变的数量,不管传多少值,如果指明c的值,那么c就一直是默认值
    print(a,b,c)
    
func(3,5,35,5)#3 (5, 35, 5) 5

func(3,5,35,5,c = 8)#3 (5, 35, 5) 8

def func(a ,*b ,**c):#'**'关键字可变参数,*和**两个参数可以都不传值,**传入的参数以字典的形式存储 c需要传入一个键值对
    print(a,b,c)
    
func(4)#4 () {}

func(3,3,4,4,m=3,n=5)#3 (3, 4, 4) {'m': 3, 'n': 5}

def func (*inlist):
    sum = 0
    for one in inlist :
        sum = sum + one
    return sum
print(func(1,2,4,5))
print(func(*[1,2,4,5]))#在调用函数时使用*,对列表进行拆分,拆分成一个个元素,同理**是用来拆解集合的

def func (**inlist):
    print (inlist)
func(**{'a':3,'b':4})

下面再说下方法、模块和包

#模块,一个'.py'文件就是一个模块
#把一个功能的模块放到一个包里,所以包可以看成是一个page包(可能以后发现又不对了,不过目前先这么解释)
def func(a,b):
    sum = a+b#这就是一个方法
    return sum
print(__name__)
if __name__ =='__main__':#这个方法在这个模块下被调用会打印出'__main__',在别的函数里会被打印成这个方法所在的模块名字,
    #所以写在这个if后面的的函数只能在本模块运行是才会被调用,因此常这个方法来进行程序的调试,在其他模块调用这个模块时间,
    #__name__ 打印出来的是__name__所在的模块名,所以if以下函数不被执行
    func(3,9)

再说下调用模块的几种方法

import pretices.zuoye1#第一种调包的方法
pretices.zuoye1.func(3,5)#pretices.zuoye1     8,打印的是两个值pretices.zuoye1这个是print(__name__)打印出来的

from pretices.zuoye1 import func#第二种调包的方法
func(4,9)#pretices.zuoye1      13

from pretices.zuoye1 import *#这个是调用这个模块下的所有函数,不过不建议这样用,可能会导致调用的包多,而很多包里会有同名函数,这样会导致出错
func(5,9)

#调用系统函数包
import time
now = time.strftime("%Y:%m:%d %H:%M:%S", time.localtime())#打印系统当前时间精确到秒
now2 = time.strftime("%Y-%m-%d", time.localtime())
print (now)
print (now2)

#使用pip安装第三方库如:安装selenium: pip install selenium  卸载的话是uninstall
#import 导入模块,实质就是在sys.path目录下进行查找,如果
#找到该目录下文件就可以导入,在该目录下的目录里的文件就不能导入
#执行文件的路径为最终的路径,以他的sys.path下的目录为基准
import sys
print(sys.path)

今天结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhaoXuWen23

你的鼓励是我的动力,持续更新中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值