zoukankan      html  css  js  c++  java
  • Python全栈开发day4

    1python三元运算

        实现方法:

        result = 1 if 条件 else 2

        例如:

    1
    2
    3
    4
    #!/bin/env python
    #-*- coding:utf-8 -*-
    name = 'sam' if 2 > 3 else 'shaw'
    print(name)

    2、集合

        集合是一个无序并且不重复的元素的集合,基本功能包括:关系测试和消除重复元素(去重)

        2.1 集合的定义:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/env python
    #-*- coding:utf-8 -*-
    basket = {'apple','orange','apple','pear'}
    # 或者
    name = set('sam',)
    print(basket,name)
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    {'pear', 'apple', 'orange'} {'a', 's', 'm'}

        2.2 集合方法总结

           http://www.cnblogs.com/opsedu/p/5546559.html

    3、拷贝

        3.1 数字和字符串

           对于字符串和数字来说,对其的赋值,浅拷贝和深拷贝操作,操作后的值都一样,因为他们都指向同一个内存地址

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/bin/env python
    #-*- coding:utf-8 -*-
    import copy
    a = 'shaw'
    m = a                               # 赋值
    a2 = copy.copy(a)                   # 浅拷贝
    a3 = copy.deepcopy(a)               # 深拷贝
    print(id(a),id(m),id(a2),id(a3))    # 查看各变量内存地址
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    17386440 17386440 17386440 17386440
    # # #
    b = 68
    n = b                               # 赋值(其他同上)
    b2 = copy.copy(b)
    b3 = copy.deepcopy(b)
    print(id(b),id(n),id(b2),id(b3))
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    1363081104 1363081104 1363081104 1363081104

        3.2 其他数据类型

           对于字典、元祖、列表而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

           a. 赋值(只是创建了一个变量,该变量指向了原来的内存地址)

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/env python
    #-*- coding:utf-8 -*-
    import copy
    info = {'k1':'shaw','k2':'sam','k3':['shaw',24]}
    info2 = info
    print(id(info),id(info2))
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    6817416 6817416

           b. 浅拷贝(在内存中,仅仅另创建了第一层数据,即仅仅另copy了一份最外层的数据)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/env python
    #-*- coding:utf-8 -*-
    import copy
    info = {'k1':'shaw','k2':'sam','k3':['shaw',12345]}
    info2 = copy.copy(info)
    print(id(info),id(info2))                     
    print(id(info.get('k1')),id(info2.get('k1'))) 
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    17237640 17728648
    17667160 17667160    # 第二层内存指向同一个地址,表示第二层并没有复制

           c. 深拷贝(在内存中将所有数据重新创建了一份。除了最里面一层,由' '决定的)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/env python
    #-*- coding:utf-8 -*-
    import copy
    info = {'k1':'shaw','k2':'sam','k3':[{'shaw':24},12345]}
    info2 = copy.deepcopy(info)
    print(id(info),id(info2))
    print(id(info.get('k3')[0]),id(info2.get('k3')[0]))
    print(id(info.get('k3')[1]),id(info2.get('k3')[1]))
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    5310216 11913608
    5310088 12344584
    4673488 4673488             # 最里面一层内存地址相同

        注意:

        pythonstrint不能被修改,想要修改,只能再创建

        python内部对字符串和数字的优化:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/env python
    #-*- coding:utf-8 -*-
    import copy
    a = 298
    b = 298
    print(id(a),id(b))
    # # #
    c = 'shaw_wang'
    d = 'shaw_wang'
    print(id(c),id(d))
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    3362768 3362768      # 相同的内容,只创建一份,指向同一个地址
    4600496 4600496      #相同的内容,只创建一份,指向同一个地址

    4、函数

        4.1 函数式编程最重要的是增强代码的重用性和可读性

        4.2 定义/使用函数

           def 函数名(参数):

               函数体

               返回值

           函数定义要点:

               def:表示函数关键字

               函数名:函数的名称,函数的调用根据函数名

               函数体:函数中的逻辑计算等

               返回值:函数执行完毕后,可以给调用者返回数据

        4.3 返回值

           默认返回None

           当函数执行到返回值时,函数将终止,返回值以后的代码不执行

        4.4 参数

           a. 普通参数

               包括形式参数和实际参数

               参数一一对应

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/env python
    # -*- coding:utf-8 -*-
    def shaw(msg):          # msg为形式参数
        if msg == 'sam':
            print('男神')
        else:
            print('傻帽')
    shaw('sam')             # sam为实际参数

           b. 默认参数(放在参数的最后)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/env python
    # -*- coding:utf-8 -*-
    def shaw(msg,age = 24):     # 在定义参数是,可以给参数定义值,叫默认参数
        if msg == 'sam':
            print('男神,%s'%age)
        else:
            print('傻帽')
    shaw('sam',18)              # 调用时,也可以指定参数
    shaw('sam')                 # 使用默认参数age=24

           c. 动态参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/env python
    # -*- coding:utf-8 -*-
    def func(*b):
        print(b)
    func(1,2,3)         # 第一种执行方式
    a = [44,55,66]      # 第二种执行方式
    func(a)           
    func(*a)
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    (1, 2, 3)
    ([44, 55, 66],)     # 不加*,是把a看作为一个整体作为函数的一个参数
    (44, 55, 66)        # 加*,是循环a中的每个元素,作为函数的参数

     

           d. 动态参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/env python
    # -*- coding:utf-8 -*-
    def func(**b):
        print(b)
    func(name='shaw',age=24)            # 执行方式一
    info = {'name':'shaw','age':24}   
    func(**info)                        # 执行方式二
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    {'age': 24, 'name': 'shaw'}
    {'age': 24, 'name': 'shaw'}

      4.5 函数传参

        函数在传递参数时,传的是引用

        

      4.6 变量

           局部变量

               在函数体区块内定义的变量,仅在当前函数中生效

           全局变量

               在函数体外定义的变量,在所有函数中都生效

           例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/env python
    # -*- coding:utf-8 -*-
    name = ('shaw')             # 全局变量
    def func(*args):
        name = ('sam')          # 局部变量
        if 2>1:
            print(name,args)
        else:
            print('haha')
    func(24)

     

  • 相关阅读:
    while...break 实例
    java ++ -- 异或 短路与 短路或 三目条件
    Java StringBuffer与StringBuider
    输入任意5个整数,输出它们的和。
    java输入年份和月份,输出天数
    进制转换
    luogu 4884 多少个1?
    SDOI2013 随机数生成器
    CQOI2018 破解D-H协议
    模板BSGS(SDOI2011计算器) 模板EXBSGS
  • 原文地址:https://www.cnblogs.com/opsedu/p/5546684.html
Copyright © 2011-2022 走看看