• 初始python(三)


    1. 循环 if, while, for
    break : 结束整个循环
    continue :跳出当前这次循环,但不结束整个循环
    else :结束整个循环后才执行,不能与break合用,但可以与continue合用。

    2. bool 惰性求值,从左到右判断,只要出现一个false就返回。

    3. 打开文件

     1 # 常用方法
     2 # 打开文件test.txt
     3 file = open('test.txt', 'r')
     4 # 读取文件
     5 file.read()
     6 # 关闭文件
     7 file.close()
     8 
     9 # with 方法(系统自动会关闭文件)
    10 with open('test.txt', 'r') as f:
    11  file = f.read()
    12 
    13 '''
    14 with 工作机制分析
    15 打开文件时,调用对象 test 的 __enter__方法
    16 关闭文件时,调用对象 test 的 __exit__方法
    17 分析如下
    18 '''
    19 class test(object):
    20  def __init__(self, args):
    21   self.args  = args
    22  def __enter__(self):
    23   print('I am come in now')
    24   return self.args
    25  def __exit__(self, type, value, traceback):
    26   print('I am come out now')
    27 with test('hello men') as f:
    28  # 返回 __enter__ 方法 return 的值
    29  print(f)
    View Code

    4. 断言
    # 断言是一种开发时期检验代码的方式,只断言绝对不能出现的错误。
    assert

    # 格式:
    # assert 表达式,"出错后抛出异常信息"
    # 默认返回True

    5. 异常处理

     1 '''
     2 1. 尽量一个try就用一个except
     3 2. 慎用异常:
     4    1) 找到python内置异常
     5    2)理解python的内置异常分别对应什么情况
     6    3)阅读你的代码,找到你的代码里可能会抛出异常的地方
     7    4)仅对小部分代码进行异常处理
     8 '''
     9 try:
    10  '''有可能抛出异常的代码'''
    11  print('test')
    12 except:
    13  '''try里面的代码抛出异常就执行except代码块里的代码'''
    14  print('error')
    15 else:
    16  '''tyr代码块里的代码如果没有抛出异常就执行else代码块里的代码'''
    17  print('hello')
    18 finally:
    19  '''不管如何,finally里的代码总会被执行'''
    20  print('hai')
    21 '''
    22 异常应用方法
    23    1.(在已知异常的前提下)捕获正确的异常,不要直接 try except
    24    2.异常的处理,要有日志。
    25  '''
    26  
    27 '''日志的使用'''
    28 import logging
    29 # 实例化一个logger对象
    30 logger = logging.getLogger()
    31 # 指定日志文件存储路径
    32 hdlr = logging.FileHandler('/tmp/testlog.txt')
    33 # 格式化日志输出格式
    34 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    35 # 传入格式到日志对象logger
    36 hdlr.setFormatter(formatter)
    37 # 传入文件到日志对象logger
    38 logger.addHandler(hdlr)
    39 # 生成日志等级
    40 logger.setLevel(logging.NOTSET)
    41 # 生成debug日志等级
    42 logger.debug('This is a debug message')
    43 # 生成error日志等级
    44 logger.error('This is a error message')
    View Code

    6. 函数

     1 #函数要有返回值,return
     2 #写函数文档,doc('''函数说明文档'''),如:
     3 def test(a = 666):
     4  '''函数说明文档'''
     5  return a
     6 print(test.__doc__)
     7 print(test())
     8 '''
     9 变量作用域,先看函数局部变量,如果没有再找全局变量。
    10 
    11 函数参数(顺序排列):必选参数, 默认参数, 可变参数, 关键字参数。
    12 必选参数, a  # 没有默认值
    13 默认参数, b = 1  # 有默认值(在调用时可以重新赋值),在某种情况下降低函数的难度。
    14 可变参数, *args  # args 接收的是一个tuple。
    15 关键字参数, **kwargs   # kwargs 接收的是一个dict。
    16 如:
    17 '''
    18 def test(a, b = 1, *args, **kwargs):
    19  return a, b, args, kwargs
    20 print(test(1,2,3,[1,2,3],aa=1,bb=2,cc=3))
    21 
    22 '''
    23 判断传入参数的数据类型:
    24 isinstance(传入的参数, 数据类型),如:
    25 判断传入参数是不是int类型,如果是就存进list,否则pass。
    26 '''
    27 def func(*a):
    28  list = []
    29  for b in a:
    30   if isinstance(b, int):
    31    list.append(b)
    32   else:
    33    pass
    34    return b
    35 print(func(1,2,'d','f',3,'panisme',666))
    36 
    37 # lambda 表达式  ,如:
    38 a = [1,2,3,4,5,6]
    39 b = filter(lambda x :x!=5,a)    # 下面是等价表达
    40 # 分析过程:
    41 b = []
    42 for x in a:
    43     if x != 5:
    44         b.append(x)
    View Code

    5. 面向对象编程

     1 '''
     2 构造函数,初始化类方法内部变量,给整个类方法使用。 
     3 def __init__(self, args):
     4  self.args = args
     5 析构函数,销毁类方法内部变量,减少内存使用。 
     6 def __del__(self):
     7  del self.args
     8 '''
     9 class ClassName(object):
    10  """docstring for ClassName"""
    11  def __init__(self, arg):
    12   super(ClassName, self).__init__()  # 使用 super 方法继承某个类,优点是可直接使用该类的构造函数。
    13   self.arg = arg
    14  @staticmethod # 静态方法的装饰(好处如下)。
    15  def function():
    16   pass
    17 print(ClassName.function())  # 不用实例化一个对象,直接把类里的方法当成属性来用
    18  
    19 '''类的继承'''
    20 import random as r
    21 class Fish:
    22     def __init__(self):
    23         self.x = r.randint(0,10)
    24         self.y = r.randint(0,10)
    25     def move(self):
    26         self.x -= 1
    27         print('我的位置是:', self.x, self.y)
    28 class Goldfish(Fish):
    29     pass
    30 class Carp(Fish):
    31     pass
    32 class salmon(Fish):
    33     pass
    34 class Shark(Fish):
    35     def __init__(self):
    36         # 直接重写Fish父类,其中self是子类中的self
    37         #Fish.__init__(self)
    38         # 使用super()函数重写Fish父类,不需要传参进来;以后要改用继承的类,直接在子类中修改父类名即可
    39         super().__init__()
    40         self.hungry = True
    41     def eat(self):
    42         if self.hungry:
    43             print("吃货的梦想就是天天吃^_^")
    44             self.hungry = False
    45         else:
    46             print("太撑了,吃不下了!")
    47 # 实例化一条鱼,生成一个fish对象
    48 fish = Fish()
    49 # 调用fish对象(鱼)的move方法
    50 fish.move()
    51 goldfish = Goldfish()
    52 goldfish.move()
    53 goldfish.move()
    54 shark = Shark()
    55 shark.move()
    56 shark.eat()
    57 shark.eat()
    58  
    59 '''类的多重继承'''
    60 class Base1:
    61     def foo1(self):
    62         print("我是foo1,我为Base1代言...")
    63 class Base2:
    64     def foo2(self):
    65         print("我是foo2,我为Base2代言...")
    66 # 多重继承父类,此例继承了Base1和Base2
    67 class C(Base1, Base2):
    68     pass
    69 c = C()
    70 c.foo1()
    71 c.foo2()
    View Code
  • 相关阅读:
    C#基础:单例模式与多线程
    C#基础:线程同步
    C#基础:C#中的数据结构
    C#基础:GC中什么是代,一共分几代
    C#基础:Dispose方法和Finalize方法在何时被调用
    C#基础:.NET中GC的运行机制
    C#基础:简述.NET中堆栈和堆的特点和差异
    PLSQL_基础系列05_视图控制WITH CHECK OPTION(案例)
    PLSQL_基础系列04_时间间隔INTERVAL(案例)
    PLSQL_基础系列03_合并操作UNION / UNION ALL / MINUS / INTERSET(案例)
  • 原文地址:https://www.cnblogs.com/panisme/p/8072975.html
Copyright © 2020-2023  润新知