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)

     

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
  • 原文地址:https://www.cnblogs.com/opsedu/p/5546684.html
Copyright © 2011-2022 走看看