Python 点滴积累(8)

Python 函数

传递实参

向函数传递实参的方式有很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可以使用列表和字典。

位置实参

位置实参的顺序比较重要,否则会得到不符合预期的结果。

def animal(animal_type,animal_name):
    """显示宠物信息"""
    print(animal_type+"'s name is "+animal_name.title())
    
animal('cat','kitty')

程序输出:

cat's name is Kitty
关键字实参

关键字实参是传递给函数的名称-值对。
关键字实参无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个的用途。

def animal(animal_type,animal_name):
    """显示宠物信息"""
    print(animal_type+"'s name is "+animal_name.title())
    
animal(animal_name='kitty',animal_type='cat')

程序输出:

cat's name is Kitty

编写函数时,可以给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。
使用默认值时,在形参列表中必须先列出没有默认值得形参,在列出有默认值的实参。

def animal(animal_name,animal_type='cat'):
    """显示宠物信息"""
    print(animal_type+"'s name is "+animal_name.title())
      
animal('kitty')

程序输出:

cat's name is Kitty

返回值

在函数中,可以使用return语句将值返回到调用函数的代码行。

def get_full_name(first_name,last_name):
    """返回完整姓名"""
    full_name=first_name+" "+last_name
    return full_name
get_full_name('Li','Ming')

程序输出:

'Li Ming'
返回字典
def get_person(first_name,last_name):
    """返回一个字典"""
    person={'first':first_name,'last':'last_name'}
    return person

get_person('Li','Ming')

程序输出:

{'first': 'Li', 'last': 'last_name'}
传递列表
def greet_users(names):
    """传递一个列表"""
    for name in names:
        print("Hello,"+name+"\n")
        
names=["Jack","Rose","Bob","Jerry"]
greet_users(names)

程序输出:

Hello,Jack

Hello,Rose

Hello,Bob

Hello,Jerry


在函数中修改列表

将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。

def print_colors(destination,source):
    """打印颜色模型"""
    while source:
        color=source.pop()
        print("color model:"+color)
        destination.append(color)
        
def show_colors(destination):
    """打印颜色"""
    for color in destination:
        print("color:"+color)
        
source=["red","blue","green","yellow"]
destination=[]
print_colors(destination,source)
show_colors(destination)
print(source)

程序输出:

color model:yellow
color model:green
color model:blue
color model:red
color:yellow
color:green
color:blue
color:red
[]

这种方式修改了原始的列表,如果要保存原始的列表,可传递原始列表的副本。

print_colors(destination,source[:])
传递任意数量的实参

星号让Python创建一个名为name的空元组,并将收到的所有值都封装进这个元组中。

def animals(*name):
    print(name)

animals('cat')
animals('cat','dog','pig')

程序输出:

('cat',)
('cat', 'dog', 'pig')
结合使用位置实参和任意数量实参

如果让函数接收不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,在将余下的实参都收集到最后一个形参中。

def person(name,age,*fruits):
    print(name+","+str(age))
    print(name+"'s favorite fruits are :")
    for fruit in fruits:
        print(fruit)
     
person("LiMing",18,'apple','pear')

程序输出:

LiMing,18
LiMing's favorite fruits are :
apple
pear

使用任意数量的关键字实参

两个星号让Python创建一个info字典,并将收到的所有名称-值对都封装在这个字典中。

def person(name,sex,**info):
    profile={}
    profile['name']=name
    profile['sex']=sex
    for key,value in info.items():
        profile[key]=value
    return profile

p=person("Bob","man",addr="Beijing",tel="23456")
print(p)

程序输出:

{'name': 'Bob', 'sex': 'man', 'addr': 'Beijing', 'tel': '23456'}

将函数存储在模块中

将函数存储在被陈为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。
要调用被导入模块中的函数,可指定导入的模块名称和函数名,并用句点分割它们。`

module_name.function_name()

导入特定的函数:

from model_name import function_name

若要导入多个函数,可用逗号分割函数名
导入特定的函数,在使用时直接使用函数名就可以了。

使用as给函数指定别名
from model_name import function_name as fn
使用as给模块指定别名
import model_name as p
导入模块中的所有函数

使用星号运算符可以让Python导入模块中的所有函数
在使用并非自己编写的大型模块时,最好不要使用这种方法:如果模块中有函数名臣与你的项目中使用的名称相同,可能导致意想不到的结果:Python可能遇到多个名称相同的函数或变量,进而覆盖函数,而不是分别导入所有的函数。
最佳的做法是,要么只导入你需要的函数,要么导入整个模块并使用句点表示法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值