python系列之:python系列之:深入理解函数、方法以及函数和方法的区别
- 一、函数
- 二、函数参数
- 1.必需参数
- 2.关键字参数
- 3.默认参数
- 4.不定长参数
- 三、函数和方法的区别
一、函数
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
函数实际例子如下所示:
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
#sum用于接收返回值
sum = max(a, b)
print(sum)
输出如下所示:
5
二、函数参数
1.必需参数
必需参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print (str)
return
#调用printme函数
printme( str = "菜鸟教程")
2.关键字参数
关键字参数:函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致。尽量保持一致。
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
#调用printinfo函数
printinfo( age=50, name="runoob" )
3.默认参数
默认参数:调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值。
#可写函数说明
def printin服务器托管网fo( name, age = 35 ):
"打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
#调用printinfo函数
printinfo( age=50, name="runoob" )
print ("------------------------")
printinfo( name="runoob" )
输出如下所示:
名字: runoob
年龄: 50
------------------------
名字: runoob
年龄: 35
4.不定长参数
不定长参数:函数能处理比当初声明时更多的参数。这些参数叫做不定长参数
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
输出如下所示:
输出:
70
(60, 50)
加了两个星号 ** 的参数会以字典的形式导入。
# 可写函数说明
def printinfo( arg1, **vardict ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vardict)
# 调用printinfo 函数
printinfo(1, a=2,b=3)
输出如下所示:
输出:
1
{'a': 2, 'b': 3}
三、函数和方法的区别
from types import MethodType,FunctionType
class Dog(object):
def fetch(self):
print("小狗喜欢吃骨头")
pass
def max(a, b):
if a > b:
return a
else:
return b
#当函数调用
#Dog.fetch()
print(Dog.fetch)
#判断是否是方法
print(isinstance(Dog.fetch,MethodType))
#判断是否是函数
print(isinstance(Dog.fetch,FunctionType))
dog = Dog()
#dog.fetch()
print(dog.fetch)
a = 4
b = 5
#sum用于接收返回值
sum = max(a, b)
print(sum)
输出如下所示:
False
True
>
- m服务器托管网ax(a,b)在类外部是函数
- 类里面可以是方法也可以是函数,取决于调用,类调用是函数,对象调用是方法。对象是类的一个实例。
- 类和对象的关系可以理解为:鸟和猫头鹰,猫头鹰是鸟的一个实例。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: [QML]事无巨细开始实践QML开发(一)什么是QML,为什么学习QML,先写一个简单的页面
[QML]从零开始QML开发(一)什么是QML,为什么学习QML,先写一个简单的页面 QML开发和QWidget开发的区别 QML(Qt Meta-Object Language)是Qt提供的一种声明性语言,用于快速创建用户界面。相对而言,Qt Widgets…