Python第二周学习心得

函数

函数中括号里可以传入参数可以是1个可以是多个也可以不传入参数,同时可以给参数赋默认值,这样当调用时没有传入参数也可以保证函数正常运行‘args’表示可变参数,可以传入多个参数。函数最后可以有一个返回值,也可以没有,如果需要将列表中的参数传入进去,需要在列表前加一个‘*’

def add(*args):
    total = 0
    for val in args:
        total += val
    return total
print(add())

在参数前使用*号,表示args是可变参数
也就是说调用add函数时传入参数的个数可以是0个,也可以是多个!

作用域 - LEGB

L:局部作用域
E:嵌套作用域
G:全局作用域
B:内置作用域
函数搜索的顺序是L -> E -> G -> B

a = 1000 # 全局变量
def f():
    a = 2000 #局部变量
    print(a) # 输出2000
    def g():
        b = 'hello'
print(a) # 输出1000
f()

模块

import **** # 调用****模块
import **** from **** # 从****模块里导入****这个函数
import **** as ** # 使**这个名称表示****这个模块

字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号(‘或”)来创建字符串。

+   字符串连接   
>>>a + b
'HelloPython'
*   重复输出字符串 
>>>a * 2
'HelloHello'
[]  通过索引获取字符串中字符    
>>>a[1]
'e'
[ : ]   截取字符串中的一部分  
>>>a[1:4]
'ell'
in  成员运算符 - 如果字符串中包含给定的字符返回 True    
>>>"H" in a
True
not in  成员运算符 - 如果字符串中不包含给定的字符返回 True   
>>>"M" not in a
True

列表

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
例:

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

元组

即数据不可变的列表,创建一个元组所需要消耗的控件时间都远远小于列表

s = (1, 2, 3, 4)

集合

Python中的集合类似于数学中的集合,集合中无法存储重复的元素

def main():
    set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
    print(set1)
    set1.add(7)
    print(set1)
    set2 = {1, 3, 5, 7, 9}
    print(set1.intersection(set2))  # 输出交集
    print(set1.union(set2))  # 输出并集
    print(set1.difference(set2))  # 输出差集
    print(set1.symmetric_difference(set2))  # 输出对称差集
    if 3 in set1:
        set1.remove(3)  # 先判断一个元素是否在集合中,如果在就删除
    for val in set1:  # 输出集合中的元素
        print(val)
    print(set1.issuperset(set2))  # 判断set1是不是set2的超集
    print(set1.issubset(set1))  # 判断set1是不是set2的子集
    list1 = list(set1)  # 将列表转化为集合
    tuple1 = tuple(set1)  # 将集合转化为元组
    set3 = set(list1)  # 将列表转化为数组
if __name__ == '__main__':
    main()

tips:集合是无序的无法使用下表运算,如果删除的元素在集合中不存在就会报错,所以在删除集合的元素之前一般要判断改元素是否存在于集合中

内存管理

栈:变量 - 地址 - 对象的引用
堆:真正的对象
id():获取对象地址
is:判断是不是同一个对象
sys.getsizeof:返回对象所占空间大小
sys.getrefcount:查看对象的引用计数
静态区

tips:Python中使用的是自动内存管理,有垃圾回收机制。

面向对象编程

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
实例变量:定义在方法中的变量,只作用于当前实例的类。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。
实例化:创建一个类的实例,类的具体对象。
方法:类中定义的函数。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

class Parent:        # 定义父类
   parentAttr = 100
   def __init__(self):
      print "调用父类构造函数"

   def parentMethod(self):
      print '调用父类方法'

   def setAttr(self, attr):
      Parent.parentAttr = attr

   def getAttr(self):
      print "父类属性 :", Parent.parentAttr

class Child(Parent): # 定义子类
   def __init__(self):
      print "调用子类构造方法"

   def childMethod(self):
      print '调用子类方法'

c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()          # 再次调用父类的方法 - 获取属性值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值