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

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

3. 打开文件

 # 常用方法
# 打开文件test.txt
file = open('test.txt', 'r')
# 读取文件
file.read()
# 关闭文件
file.close() # with 方法(系统自动会关闭文件)
with open('test.txt', 'r') as f:
 file = f.read() '''
with 工作机制分析
打开文件时,调用对象 test 的 __enter__方法
关闭文件时,调用对象 test 的 __exit__方法
分析如下
'''
class test(object):
 def __init__(self, args):
  self.args  = args
 def __enter__(self):
  print('I am come in now')
  return self.args
 def __exit__(self, type, value, traceback):
  print('I am come out now')
with test('hello men') as f:
 # 返回 __enter__ 方法 return 的值
 print(f)

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

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

5. 异常处理

 '''
1. 尽量一个try就用一个except
2. 慎用异常:
   1) 找到python内置异常
   2)理解python的内置异常分别对应什么情况
   3)阅读你的代码,找到你的代码里可能会抛出异常的地方
   4)仅对小部分代码进行异常处理
'''
try:
 '''有可能抛出异常的代码'''
 print('test')
except:
 '''try里面的代码抛出异常就执行except代码块里的代码'''
 print('error')
else:
 '''tyr代码块里的代码如果没有抛出异常就执行else代码块里的代码'''
 print('hello')
finally:
 '''不管如何,finally里的代码总会被执行'''
 print('hai')
'''
异常应用方法
   1.(在已知异常的前提下)捕获正确的异常,不要直接 try except
   2.异常的处理,要有日志。
 '''
 
'''日志的使用'''
import logging
# 实例化一个logger对象
logger = logging.getLogger()
# 指定日志文件存储路径
hdlr = logging.FileHandler('/tmp/testlog.txt')
# 格式化日志输出格式
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
# 传入格式到日志对象logger
hdlr.setFormatter(formatter)
# 传入文件到日志对象logger
logger.addHandler(hdlr)
# 生成日志等级
logger.setLevel(logging.NOTSET)
# 生成debug日志等级
logger.debug('This is a debug message')
# 生成error日志等级
logger.error('This is a error message')

6. 函数

 #函数要有返回值,return
#写函数文档,doc('''函数说明文档'''),如:
def test(a = 666):
 '''函数说明文档'''
 return a
print(test.__doc__)
print(test())
'''
变量作用域,先看函数局部变量,如果没有再找全局变量。 函数参数(顺序排列):必选参数, 默认参数, 可变参数, 关键字参数。
必选参数, a  # 没有默认值
默认参数, b = 1  # 有默认值(在调用时可以重新赋值),在某种情况下降低函数的难度。
可变参数, *args  # args 接收的是一个tuple。
关键字参数, **kwargs   # kwargs 接收的是一个dict。
如:
'''
def test(a, b = 1, *args, **kwargs):
 return a, b, args, kwargs
print(test(1,2,3,[1,2,3],aa=1,bb=2,cc=3)) '''
判断传入参数的数据类型:
isinstance(传入的参数, 数据类型),如:
判断传入参数是不是int类型,如果是就存进list,否则pass。
'''
def func(*a):
 list = []
 for b in a:
  if isinstance(b, int):
   list.append(b)
  else:
   pass
   return b
print(func(1,2,'d','f',3,'panisme',666)) # lambda 表达式  ,如:
a = [1,2,3,4,5,6]
b = filter(lambda x :x!=5,a)    # 下面是等价表达
# 分析过程:
b = []
for x in a:
    if x != 5:
        b.append(x)

5. 面向对象编程

 '''
构造函数,初始化类方法内部变量,给整个类方法使用。 
def __init__(self, args):
 self.args = args
析构函数,销毁类方法内部变量,减少内存使用。 
def __del__(self):
 del self.args
'''
class ClassName(object):
 """docstring for ClassName"""
 def __init__(self, arg):
  super(ClassName, self).__init__()  # 使用 super 方法继承某个类,优点是可直接使用该类的构造函数。
  self.arg = arg
 @staticmethod # 静态方法的装饰(好处如下)。
 def function():
  pass
print(ClassName.function())  # 不用实例化一个对象,直接把类里的方法当成属性来用
 
'''类的继承'''
import random as r
class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0,10)
    def move(self):
        self.x -= 1
        print('我的位置是:', self.x, self.y)
class Goldfish(Fish):
    pass
class Carp(Fish):
    pass
class salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        # 直接重写Fish父类,其中self是子类中的self
        #Fish.__init__(self)
        # 使用super()函数重写Fish父类,不需要传参进来;以后要改用继承的类,直接在子类中修改父类名即可
        super().__init__()
        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃货的梦想就是天天吃^_^")
            self.hungry = False
        else:
            print("太撑了,吃不下了!")
# 实例化一条鱼,生成一个fish对象
fish = Fish()
# 调用fish对象(鱼)的move方法
fish.move()
goldfish = Goldfish()
goldfish.move()
goldfish.move()
shark = Shark()
shark.move()
shark.eat()
shark.eat()
 
'''类的多重继承'''
class Base1:
    def foo1(self):
        print("我是foo1,我为Base1代言...")
class Base2:
    def foo2(self):
        print("我是foo2,我为Base2代言...")
# 多重继承父类,此例继承了Base1和Base2
class C(Base1, Base2):
    pass
c = C()
c.foo1()
c.foo2()

初始python(三)的更多相关文章

  1. python基础之初始python

    初始python之基础一 一.Python 介绍 1.python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发 ...

  2. 零基础学Python--------入门篇 第1章 初始Python

    入门篇 第1章  初始Python 1.1  Pyhton 概述 1.1.1 了解 Python Python,本义是指“蟒蛇”.1989年,荷兰人Guido van Rossum发明了一种面向对象的 ...

  3. 01_python_初始python

    一.初始python python是一门解释型语言,弱类型语言 / python解释器最为常用的是cpython(官方) 弱类型语言:   a = 1 a = 'alex'   #说明变量a既可以是整 ...

  4. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  5. Python - 三大器 迭代器,生层器,装饰器

    目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭 ...

  6. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  7. Python三引号(triple quotes)

    python中三引号可以将复杂的字符串进行复制: python三引号允许一个字符串跨多行,字符串中可以包含换行符.制表符以及其他特殊字符. 三引号的语法是一对连续的单引号或者双引号(通常都是成对的用) ...

  8. Python 入门之 Python三大器 之 装饰器

    Python 入门之 Python三大器 之 装饰器 1.开放封闭原则: (1)代码扩展进行开放 ​ 任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代 ...

  9. Python 入门之 Python三大器 之 生成器

    Python 入门之 Python三大器 之 生成器 1.生成器 (1)什么是生成器? 核心:生成器的本质就是一个迭代器 迭代器是Python自带的 生成器程序员自己写的一种迭代器 def func( ...

  10. Python 入门之 Python三大器 之 迭代器

    Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...

随机推荐

  1. FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  2. 服务器php启动

    php.ini放在--with-config-file-path设置路径下lib文件夹中才找的到!!!! fpm的配置文件需要放在这个位置/usr/local/etc/php-fpm.conf,暂时不 ...

  3. Delphi下OpenGL2d绘图(06)-画图(多窗口、多视图、多个DC)

    一.前言 在学习OpenGL的过程中,发现很多函数都是全局的.前面几章中都是在一个窗口DC中画图,那么要在多个窗口画图,需要怎么处理呢?网上方法有多种,这里采用其中一种,利用wglMakeCurren ...

  4. Orchard源码:EventBus&EventHandler

    概述 看源码是一件吃力又很爽的事情,昨天还被搞的一头雾水,今天忽然守得云开见月明.明白它设计意图的同时,感觉自己又提升了一步:) Orchard刚开始看往往毫无头绪,建议可以从Orchard.Fram ...

  5. jquery中 dom对象与jQuery对象相互转换

    var jq = $(dom对象);//额 再补充点吧好记. $是jquery的别名.这一句等价于 var jq = jQuery(dom对象); 反之. dom对象 = jq[0]; //不写那么长 ...

  6. The following control could not be licensed: TXTextControl.TextControl。。解决方案

    在这篇博客中,下面的控制不能授权:txtextcontrol.textcontrol这意味着,找不到合适的许可证来验证控制.一般情况下,许可证将被自动纳入应用程序,通常不必担心许可证的所有. “许可证 ...

  7. [编程] C语言的二级指针

    用C语言指针作为函数返回值:C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数函数运行结束后会销毁在它内部定义的所有局部数据 #include<stdio.h> #in ...

  8. [转]Shared——回调函数是什么

    本文内容转自知乎 作者:no.body 链接:https://www.zhihu.com/question/19801131/answer/27459821 回调函数(callback)是什么? 什么 ...

  9. python_tensorflow_Django实现逻辑回归

    1.工程概要 2.data文件以及input_data文件准备 链接:https://pan.baidu.com/s/1EBNyNurBXWeJVyhNeVnmnA 提取码:4nnl 3.logiss ...

  10. bzoj一句话题解

    发现好多人都在搞这个...本人也想来试试(Solved刚到70就搞这个靠不靠谱啊喂).会更新的.嗯. 1000-1029 1000 A+B problem (这个还需要一句话吗?). 1001 狼抓兔 ...