2020-11-13

一.浅拷贝

    -->.copy()方法

d ={'name':'小黑','age':6,'color':'black'}

d1 = d.copy()    # //拷贝 出来,d和d1 是不同的对象没有关系了,id不一样

d1 = d #d和d1 指向了相同的对象,id 一样

d['name'] = '小白'

print(d,id(d))

print(d1,id(d1))

# {'name': '小白', 'age': 6, 'color': 'black'} 2989288422856

# {'name': '小黑', 'age': 6, 'color': 'black'} 2989288422928

# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328

# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328


-->浅拷贝

d ={'name':{'j':'变黑','a':1},'age':6,'color':'black'}

d1 = d.copy()

d1['name']['j'] ='变白'

print(d,id(d))

print(d1,id(d1))

# {'name': {'j': '变黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892314640

# {'name': {'j': '变黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892315000

# {'name': {'j': '变白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381264

# {'name': {'j': '变白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381624

# 运行结果:都改了:说明浅拷贝,因为只是拷贝了字典对象,里面还有一层(列表,字典..),这个不会进行复制,因此改了一个就都改变了

二.字典的遍历

-->三种方法

keys()    values()    items()
d ={'name':'小黑','age':6,'color':'black'}

print(d.keys())         //dict_keys(['name', 'age', 'color'])

print(d.values())       // dict_values(['小黑', 6, 'black'])

print(d.items())        // dict_items([('name', '小黑'), ('age', 6), ('color', 'black')])

通过for循环可将序列中的元素拿出来

for k,v in d.items():

        print(k,v)

name 小黑

age 6

color black

三,集合

        集合是和列表很相似的序列

不同点:

            -->存储不可变对象

             -->元素是无序的

             -->元素是唯一的

-->集合的创建

    1.直接创建

d = {1,2,3,4,5,"a",'b'}

print(d,type(d))

{1, 2, 3, 4, 5, 'a', 'b'}

{1, 2, 3, 4, 5, 'b', 'a'}

d = {1,2,3,4,2,1,1,'a',3,4,'a'}

print(d)

{1, 2, 3, 4, 'a'}

 2.set函数创建

d =set([1,2,3,4,5])

print(d,type(d))

{1, 2, 3, 4, 5}


-->集合的方法

-->in 和  not in      

s = {1,2,3,4}

print(1 in s)        True

print(1 not in s)        False

-->len()        //返回集合中元素个数

s1 = {1,2,3,4,5}

print(len(s1))  //5

-->add  //添加单个元素

s = {1,2,3,4,}

s.add(6)

print(s)

{1, 2, 3, 4, 6}

-->update(参数) //添加多个元素,参数可以是元组,列表,集合,集合

s1 = {1,2,3,4,5}

s2 = {6,7}

s1.update(s2)

print(s1)

{1, 2, 3, 4, 5, 6, 7}

-->pop  //随即删除一个元素

s1 = {1,2,3,4,5}

s1.pop()

print(s1) 

{2, 3, 4, 5}

--> remove        删除指定元素

s = {1,2,3,'a','b'}

s.remove(3)

print(s)

{1, 2, 'a', 'b'}

-->clear //清空集合,

s = {1,2,3,4}

s.clear()

print(s)

set()

-->集合的运算

        1.交集(&)

        2.并集(|)

        3.差集(-)        

        4.亦或集

s1 = {1,2,3,4,5}

s2 = {3,4,5,6,7}

print(s1 & s2)        //同数学集合运算规则

print(s1 | s2)         //同数学集合运算规则

print(s1 - s2)        //s1 减去 s1 s2的交集

print(s1 ^ s2)        // s1 | s2  减去   s1 & s2

{3, 4, 5}

{1, 2, 3, 4, 5, 6, 7}

{1, 2}

{1, 2, 6, 7}

5.<= 检验子集

6.< 检验真子集

7.>=  超集

8.>  真超集

s1 = {1,2,3,4,5}

s2 = {1,2,3}

print(s2 < s1)

print(s2 <= s1)

print(s1 > s2)

print(s1 >= s2)

True

True

True

True

四.函数的简介

函数:一个对象 万物皆对象

函数:把具有一定功能的代码封装起来,需要的时候调用

    格式:

        def 函数名(形参1,形数2,...):  //函数声明

            代码                      //函数实现的功能

        函数名(实参1,实参2,...)        //函数调用"""

实例:

def fn():

print('hello world')

fn()

print(fn)

hello world

<function fn at 0x0000014FEFECD268>

fn:函数这个对象(object)

五.函数的参数

   1.形参和实参:

    形参:定义 函数时的 参数变量

    实参:调用 函数时,使用的参数变量

参数传递的过程,就是 把实参的引用 传递给 形参 ,使用实参的值来执行函数体的过程。

在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的

-->加法交互函数

def fn(a,b):

    print(a + b)

fn(int(input('请输入加数1:')),int(input('请输入加数2:')))

请输入加数1:2

请输入加数2:4

6

2.参数传递方式

-->位置传参     对号入座


def fn(a,b,c):

     print('a = ',a)

    print('b = ', b)

    print('c = ', c)

fn(1,2,3)

a =  1

b =  2

c =  3

-->关键字传参

def fn(b = 1, c = 2, a = 3):

     print('a = ', a)

     print('b = ', b)

     print('c = ', c)

fn(4,5,6)

a =  6

b =  4

c =  5

-->混合传参

[注意]关键字参数不能放在位置参数前面

def fn(b = 1, c, a):

     print('a = ', a)

     print('b = ', b)

     print('c = ', c)

fn(4,5,6)

SyntaxError: non-default argument follows default argument

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 渲染: 1 当前屏幕渲染:在GPU的当前屏幕缓冲区中进行的渲染 2 离屏渲染:在GPU当前屏幕缓冲区外另建缓冲区渲...
    adrian920阅读 3,025评论 0 0
  • 1. 函数 1.1 函数的 3 种定义方法 1.1.1 函数声明 //ES5 functiongetSum(){}...
    Mrssssss阅读 2,972评论 0 0
  • Es6 1.数组 1.扩展运算符 是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参...
    林深不見鹿阅读 1,540评论 0 0
  • # 第一优先级规则声明: # 除了梦境,每一个意识主进程都必须与一个身体参与的机械进程相匹配,否则结束意识主进程。...
    李洞BarryLi阅读 9,373评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,192评论 16 22