常见的函数定义如下:
def function_name(args):
函数体
function_name(args)#调用
示例
# function
def hello_world():
print("hello_world")
hello_world()
a.定义参数默认值
# 可以在定义函数的时候指定参数默认值
def desc_pet(pet_name, animal_type="cat"):
print("my" + animal_type + "name is " + pet_name)
desc_pet("lingdang")
result:
mycatname is lingdang
b.传参方式
i:位置传参
就是在不知名传参参数名的情况下直接利用参数的索引来进行传参,如上个栗子
ii:关键字传参
与位置传参相对,直接利用参数名进行传参,如下:
def desc_pet(pet_name, animal_type="cat"):
print("my" + animal_type + "name is " + pet_name)
desc_pet(pet_name="lingdang2")
desc_pet(animal_type="dog", pet_name='tom')
result:
mycatname is lingdang2
mydogname is tom
c.传递参数类型
i:任意数量参数
如下toppings参数为数组
# 传递任意数量的实参 并 利用for 打印数据
def make_pizza_for(*toppings):
for item in toppings:
print("材料 :" + item)
make_pizza_for("mushrooms", "apple", "cheese")
result:
(‘mushrooms’, ‘green_peppers’, ‘cheese’)
材料 :mushrooms
材料 :apple
材料 :cheese
ii:参数为字典类型
# 传递参数为字典类型
def build_user_profile(first_name, last_name, **user_info):
profile = dict()
profile['first_name'] = first_name
profile['last_name'] = last_name
for keyItem, valueItem in user_info.items():
profile[keyItem] = valueItem
return profile
print(build_user_profile("james", "harden", age='29', height="196"))
result:
{‘first_name’: ‘james’, ‘last_name’: ‘harden’, ‘age’: ‘29’, ‘height’: ‘196’}
a.if name == “main”:
这个函数在python中经常被使用,优点类似java的static main 方法。不同的是这个函数一般用来解决在本文件被引用时不会执行一些没必要执行的函数。具体的原因是另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__;只有当本文件在执行时__name__=main 。
b. init(self,args):
这个函数一般用来初始化类的默认信息,类似于构造函数这样的角色,python解释器会默认执行该函数,开发者可以利用这个函数的特性将一些默认的值进行初始化。例如:单独处理数据库的初始化函数,构造配置等。
self 需要强制带上,其他的参数如上函数中讲的一样即可,如下所示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
xiaoming = Student("小明", 10)
c.def del(self):
如函数名,这个函数在函数对象销毁时python的解释器会默认调用这个函数。一般很少用到
这个在开发过程中一般使用的最为广泛,有几个需要注意的地方。
a.可以引用模块内指定函数
from module_name import function_name
b.引用的函数名指定别名
from module_name import function_name as alia_function_name
# 类名 首字母大写
class Dog:
# 默认情况下将自动执行,init 两侧 —— —— 两个下划线
def __init__(self, name, color):
self.name = name
self.color = color
def sit(self):
print(self.name.title() + "is sitting")
return self.name.title()
def roll_over(self):
print(str(self.name.title()) + " is rolling")
my_dog = Dog("yellow", 10)
print("myDog name is " + my_dog.name.title())
print("myDog roll ba " + str(my_dog.sit()))
如上:Dog 类 init 方法初始了两个属性name,color。
# 测试类和类的继承
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def voice(self):
print(self.name + "voice")
class Student(Person):
def __init__(self, name, age):
super().__init__(name, age)
def goto_school(self):
print(self.name + "goto school")
xiaoming = Student("小明", 10)
xiaoming.voice()
xiaoming.goto_school()