栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

小白python入门(三)- 函数,类,模块,包

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小白python入门(三)- 函数,类,模块,包

小白python入门(三)
      • 14.函数
      • 15.类
        • 1)创建语法
        • 2)实例调用
        • 3)动态绑定属性与方法
        • 4) 封装,继承,多态
      • 16.模块
      • 17.包
      • 内置函数
        • 1.isinstance
        • 2.dir()

14.函数
def calc(a ,b):'''创建'''
    c=a-b
    return c;


calc1 = calc(10, 20)'''调用'''
calc2 =calc(b=50,a=60)
print(calc1)
print(calc2)


在函数调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响实参的值 arg1的修改为100,不会影响n1的值
如果是可变对象,在函数体的的修改会影响到实参的值arg2的修改,append(10),会影响到n2的值
函数的返回值
(1)如果函数没有返回值【函数执行完毕之后,不需要给调用处提供数据】return可以省略不写

(2)函数的返回值,如果是1个,直接返回类型
(3)函数的返回值,如果是多个,返回的结果为元组

可以查看print

print(self, *args, sep=' ', end='n', file=None)

end 默认换行

  • 个数可变的位置参数
def p(*args):
    print(args)
    #print(args[0]) #作为一个元组来使用
    
p(20,20,30)
p(20)
lst=[10,20,30]
p(*lst) #在函数调用时,将列表中的每个元素都转换为位置实参传入
#(20, 20, 30)
#(20,)
#(10, 20, 30)

#eg:
print(self, *args, sep=' ', end='n', file=None)
位置参数
  • 个数可变的关键字参数
def fun(** args):
    print(args)
    
fun(a=10)
fun(a=20,b=30,c=60)
dic={'a':111,'b':222,'c':333}
fun(**dic)#在函数调用时,将字典中的键值对都转换为关键字实参传入
#{'a': 10}
#{'a': 20, 'b': 30, 'c': 60}
#{'a': 111, 'b': 222, 'c': 333}

以上两个个数可变的参数一个函数只能定义一个

两个同时使用时,要求 个数可变的位置参数 在 个数可变的关键字参数之前

 

如果不加* 三种方法都可以

15.类 1)创建语法
class Student:
    pass
print(id(Student)) #已经开辟空间了
print(type(Student))
print(Student)
'''
2450633353136


'''

定义在类里的函数就是

2)实例调用

创建的实例对象中 会有一个类指针指向类

  • 对象名.方法名
  • 类名.方法名(类的对象)#就是定义处的self

  • 类属性

  • 类方法

类方法和静态调用:

Studet.cm() #cls是不需要传入的
Studet.method()
3)动态绑定属性与方法

python是动态语言,创建对象后可以动态绑定属性与方法

  • 动态绑定属性
    eg:对象添加一个属性
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'在吃饭')

stu1=Student('张三',20)
stu1.gender='女'
print(stu1.gender,stu1.name,stu1.age)
  • 动态绑定方法
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'在吃饭')
def show():
    print("定义在类外的 称为方法")
stu1.s=show()
stu1.s
4) 封装,继承,多态
  • python没有修饰符来标识属性的私有 可以使用两个 _

​ 只有内部可以访问,外部不能访问

(靠程序员的自觉)

  • 默认继承object类

    class Animal(object):
    

    后面的括号写父类

    子类和父类有同名方法时 子类覆盖父类

    • 判断一个变量是否是某个类型及父继承链
	isinstance(c, Dog) #与Java类似
  • 开闭原则

    • 对扩展开放

      可以新增子类继承父类,覆盖父类的方法

    • 对修改封闭

      不可以修改 依赖父类的类型(父类类型做传入参数)的方法

16.模块

.py结尾的文件 就可以作为模块

包中有模块

  • 代码复用
  • 分工合作开发
  • 避免命名重复

  • 常用内置模块
    • sys
    • time
    • os
    • calendar(日期相关各种函数标准库)
    • urllib(读取服务器的数据标准库)
    • json
    • re
    • math
    • decimal
    • logging
  • 导入第三方包
17.包

Python中的包

  • 包是一个分层次的目录结构,它将一组功能相近的模块组织在一起

  • 作用

代码规范
避免模块名称冲突·

  • 包与目录的区别
    包含__init_ .py文件的目录称为包·目录里通常不包含_init_.py文件

  • 包的导入
    import包名.模块名 as 别名

  • 使用from…import 可以导入包,模块,函数,变量

内置函数 1.isinstance

有时候可以代替type()

判断它是不是 某个类的对象

判断是不是 多个类其中一个的对象

isinstance('a', str)

isinstance([1, 2, 3], (list, tuple))
True
isinstance((1, 2, 3), (list, tuple))
True
2.dir()

获取一个对象的所有属性和方法

>>> dir('ABC')
['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']
#__add__  命名的是有特殊用途的 比如__len__方法返回长度
>>> hasattr(obj, 'x') # 有属性(方法和变量)'x'吗?
True
>>> obj.x
9
>>> hasattr(obj, 'y') # 有属性'y'吗?
False
>>> setattr(obj, 'y', 19) # 设置一个属性'y'
>>> hasattr(obj, 'y') # 有属性'y'吗?
True
>>> getattr(obj, 'y') # 获取属性'y'
19
>>> obj.y # 获取属性'y'
19
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号