Python基础知识点

发表于:2018-6-08 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:听着music睡    来源:博客园

  自学记录
  1、字符串
  python中单引号和双引号使用完全相同。
  使用三引号('''或""")可以指定一个多行字符串。
  转义符 '\'
  反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  字符串可以用 + 运算符连接在一起,用 * 运算符重复。
  Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  Python中的字符串不能改变。
  Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  字符串的截取的语法格式如下:变量[头下标:尾下标]


  #!/usr/bin/python3
  
  str='Runoob'
  
  print(str)                 # 输出字符串
  print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
  print(str[0])              # 输出字符串第一个字符
  print(str[2:5])            # 输出从第三个开始到第五个的字符
  print(str[2:])             # 输出从第三个开始的后的所有字符
  print(str * 2)             # 输出字符串两次
  print(str + '你好')        # 连接字符串
  
  print('------------------------------')
  
  print('hello\nrunoob')      # 使用反斜杠(\)+n转义特殊字符
  print(r'hello\nrunoob')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
  #打印结果如下
  Runoob
  Runoo
  R
  noo
  noob
  RunoobRunoob
  Runoob你好
  ------------------------------
  hello
  runoob
  hello\nrunoob

  2、换行/不换行
  print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
  s = "lamxqx"
  print(s[1:3],end="")
  print(s*2)
  结果:
  amlamxqxlamxqx
  ------------------------------------------
  s = "lamxqx"
  print(s[1:3])
  print(s*2)
  结果:
  am
  lamxqxlamxqx
  
  3、判断类型
   class A:
      pass
  class B(A):
      pass
  isinstance(A(), A)  # returns True
  type(A()) == A      # returns True
  isinstance(B(), A)    # returns True
  type(B()) == A        # returns False
  --------------------------------------------
  区别:
  type()不会认为子类是一种父类类型。
  isinstance()会认为子类是一种父类类型

  
  -------------------------------------------------------------------------------------------------------------------------
  面向对象
  例子
  --------------------------------------------------------------
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  
  class Employee:
     '所有员工的基类'
     empCount = 0
  
     def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1
     
     def displayCount(self):
       print "Total Employee %d" % Employee.empCount
  
     def displayEmployee(self):
        print "Name : ", self.name,  ", Salary: ", self.salary
  
  "创建 Employee 类的第一个对象"
  emp1 = Employee("Zara", 2000)
  "创建 Employee 类的第二个对象"
  emp2 = Employee("Manni", 5000)
  emp1.displayEmployee()
  emp2.displayEmployee()
  print "Total Employee %d" % Employee.empCount
  -------------------------------------------------------
  知识点:
  1、empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。
  2、第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
  3、self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
  执行以上代码输出结果如下:
  Name :  Zara ,Salary:  2000
  Name :  Manni ,Salary:  5000
  Total Employee 2
  你可以添加,删除,修改类的属性,如下所示:
  emp1.age = 7  # 添加一个 'age' 属性
  emp1.age = 8  # 修改 'age' 属性
  del emp1.age  # 删除 'age' 属性
  你也可以使用以下函数的方式来访问属性:
  getattr(obj, name[, default]) : 访问对象的属性。
  hasattr(obj,name) : 检查是否存在一个属性。
  setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
  delattr(obj, name) : 删除属性。
  hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。
  getattr(emp1, 'age')    # 返回 'age' 属性的值
  setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
  delattr(emp1, 'age')    # 删除属性 'age'
  ----------------------------------------------------------
  Python内置类属性
  __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
  __doc__ :类的文档字符串
  __name__: 类名
  __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
  __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
  Python内置类属性调用实例如下:
  实例
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  
  class Employee:
     '所有员工的基类'
     empCount = 0
  
     def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1
     
     def displayCount(self):
       print "Total Employee %d" % Employee.empCount
  
     def displayEmployee(self):
        print "Name : ", self.name,  ", Salary: ", self.salary
  
  print "Employee.__doc__:", Employee.__doc__
  print "Employee.__name__:", Employee.__name__
  print "Employee.__module__:", Employee.__module__
  print "Employee.__bases__:", Employee.__bases__
  print "Employee.__dict__:", Employee.__dict__
  执行以上代码输出结果如下:
  Employee.__doc__: 所有员工的基类
  Employee.__name__: Employee
  Employee.__module__: __main__
  Employee.__bases__: ()
  Employee.__dict__: {'__module__': '__main__', 'displayCount': <function displayCount at 0x10a939c80>, 'empCount': 0, 'displayEmployee':
  <function displayEmployee at 0x10a93caa0>, '__doc__': '\xe6\x89\x80\xe6\x9c\x89\xe5\x91\x98\xe5\xb7\xa5\xe7\x9a\x84\xe5\x9f\xba\xe7\xb1\xbb', '__init__': <function __init__ at 0x10a939578>}



上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号