1.多值参数函数

def 函数名(*args , **kwargs):

      .......

多值参数函数顾名思义能够传入多个参数,args表示传入的元组,kwargs表示传入的字典


def function(*args, **kwargs):
print(args)
print(kwargs)
   return
function(1, 2, 3, 4, 5, 6)  # 只是传入元组数据
function(name="sddd", age=18) # 传入字典数据
function(1, 2, 3, 4, 5, 6, name="sddd", age=18) # 传入元组与字典数据

字典数据要保持key=xxx的形式,不然函数会默认为是元组

 function(1, 2, 3, 4, 5, 6, { "name": "sddd", "age": 18 })  # 此时传入的都是元组数据

那么如何通过定义的元组和字典来进行传值呢
这里采用拆包方式

num = (1, 2, 3, 4)
people = {"name": "sddd",
"age": 18 } function(*num, *num, **people)

可以看到变量前加上*就表示是元组,**表示字典,这样能够将传入的元组、字典自动拆成一个个参数,同时还不会导致将字典放到元组中
多值参数在定义一些运用比较广泛的函数定义上有着巨大的优点,同时很多大牛的框架上也会用到这些方法

2.类

 class Gun:

     def __init__(self, type, count):
"""初始化类的属性""" self.type = type
self.count = count
return def __str__(self):
"""重写print(对象)的打印效果""" return "%s 有 %d个子弹!" % (self.type, self.count) def attack(self):
"""射击""" self.count -= 1
print("哒哒哒。。。")
return def rebuild(self, num):
"""装填子弹""" self.count = num
print("子弹已装满")
return class Soldier: def __init__(self, name):
"""初始化士兵类数据""" self.name = name
self.gun = None
return def __str__(self):
"""重写print(对象)的打印效果""" if self.gun is None:
return "%s没有枪" % self.name
else:
return "%s有%s" % (self.name, self.gun.__str__()) def getGun(self,gun): self.gun = gun def attack(self):
"""攻击"""
if self.gun is None:
print("%s还没装备武器" % self.name)
else:
self.gun.attack()
return def rebuild(self, num):
"""装填"""
if self.gun is None:
print("%s还没装备武器" % self.name)
else: self.gun.rebuild(50)
return gun = Gun("AK", 50) sol = Soldier("TOM") sol.getGun(gun) sol.attack() sol.rebuild(50) print(sol) print(gun)

这里简单的实现了士兵类与枪支类的操作
类定义时关键字class + 类名 + :
里面的方法与定义 函数的格式是一样的,在创建方法时,会默认有一个self参数,这个表示当前对象,不需要传入值
每个类中的方法都分为两种,一种是系统预留的,一种是自己创建的。预留的方法普遍以(_ _init_ _)两个下划线开始,两个下划线结束
下面列举几个简单的方法:
__init__(self):初始化方法,对象创建时默认调用
__str__(self):打印对象的信息,采用print(对象名)使用
__del__(self):删除对象,在对象生命周期结束时调用
在类中,初始化方法时创建类的数据类型,当然例子中创建的是公有的变量,私有变量需要加上两个下划线如:self.__name = name。注:python中的私有不是绝对的私有,可以强制调用
在方法中调用属性时,不能简单的通过名称访问,需要通过当前对象即self访问,格式self.xxxx
注意点:判断python对象是否为空时,采用xx is None来判断

python基础(二)--多值参数以及类的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. Python基础(二) —— 字符串、列表、字典等常用操作

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...

  3. python基础(二)----数据类型

    Python基础第二章 二进制 字符编码 基本数据类型-数字 基本数据类型-字符串 基本数据类型-列表 基本数据类型-元组 可变.不可变数据类型和hash 基本数据类型-字典 基本数据类型-集合 二进 ...

  4. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  5. python基础-9.1 面向对象进阶 super 类对象成员 类属性 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  6. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  7. python基础二(list,tuple元祖、dic字典,字符串)

    一.列表list 1.list定义 列表即数组 ,list或array..列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引.最后一个元素的下标也可用-1表示.: list定义时, ...

  8. Python基础二

    1.for循环后接else __author__ = "zhou" age_of_oldboy = 56 for i in range(3): guess_age = int(in ...

  9. Python基础二. 数据结构、控制流、运算符、真值测试

    一.概述 数据结构上广义上有两种,单一类型和集合类型 单一类型,表示一种对象 集合类型,表示包含多种对象 Python 中的内建的数据类型有str.list.tuple.dict.set.number ...

随机推荐

  1. 基础篇:3.3)规范化:3d装配图

    本章目的:规范化3d零件装配图,弄清楚装配层级划分,这也是机械的基本功夫. 1.装配通用原则 在装配建模设计中,应遵循以下通用原则:a)所有的装配单元应具有唯一性和稳定性,不允许冗余元素存在: //就 ...

  2. chromedriver for mac

  3. vue 之bug<1> Warn : [vue-router] Duplicate named routes definition:

    原因:定义重复的路由名称. 我有3个不同的(父级)vue文件分别配置了3个相同的(子级)vue文件,配置路由的js文件里子集路由的name重复了. 解决方案: 一天一个小Bug

  4. es中的date类型

    JSON中没有date类型,es中的date可以由下面3种方式表示: ①格式化的date字符串,例如"2018-01-01"或者"2018-01-01 12:00:00& ...

  5. python pandas使用chunksize异步拆分固定行数的文件

    import pandas as pd import asyncio from collections import defaultdict collect = defaultdict(list) # ...

  6. java实现猴子选大王问题(约瑟夫问题)

    题目:m只猴子围成一圈报数,报n的猴子自动离开,然后下一位重新从1开始报数,一直循环,最后剩下的那个猴子就是猴大王,写出程序求出最后是大王的那只猴子最初的位置. package learn; impo ...

  7. ASP.NET MVC 域名泛解析设置

    最近有个需求要做一个动态二级域名的网站,我们可以通过这样的方式去访问我们的网站 http://用户名.blog.com.而这里的用户名是根据程序的需要动态生成的.这里就会涉及到DNS服务器,要做相应的 ...

  8. 禅道 xampp中的mysql启动时无法产生err文件

       使用opt/lampp/lampp start命令启动 错误提示:root@zabbix_server ~]# /opt/lampp/bin/mysqld_safe_helper: Can‘t ...

  9. Python基础(3) - 数据类型:3列表类型

    Python 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等.列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改.删除等操作.列表用[]包括起来的. 列 ...

  10. CentOS 7禁止IPv6

    如何在CentOS 7中禁止IPv6 https://Linux.cn/article-4935-1.html 最近,我的一位朋友问我该如何禁止IPv6.在搜索了一番之后,我找到了下面的方案.下面就是 ...