python基础(五)

1、传递实参

1.1 位置实参

def describe_pet(animal_type,pet_name):

    print("\nI have a"+animal_type+".")

    print("My "+animal_type+"'s name is "+pet_name.title()+".")

describe_pet('hamster','harry')

-->I have ahamster.

    My hamster's name is Harry.

注意:函数调用中实参的顺序与函数定义中形参的顺序一致

1.2 关键字实参

describe_pet(animal_type='hamster',pet_name='harry')

describe_pet(pet_name='harry',animal_type='hamster')

-->I have ahamster.

    My hamster's name is Harry.

    I have ahamster.

    My hamster's name is Harry.

注意:使用关键字实参时,务必准确地指定函数定义中的形参名

1.3 默认值

def describe_pet(pet_name,animal_type='dog'):

    print("\nI have a "+animal_type+".")

    print("My "+animal_type+"'s name is "+pet_name.title()+".")

describe_pet(pet_name='willie')

-->I have a dog.

    My dog's name is Willie.

注意:在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。在使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参,这让python能正确解读位置实参。

2、返回值

2.1 返回简单值

def get_formatted_name(first_name,last_name):

    full_name=first_name+' '+last_name

    return full_name.title()

musician=get_formatted_name('jimi','hendrix')

print(musician)

-->Jimi Hendrix

2.2 让实参变得可选

def get_formatted_name(first_name,last_name,middle_name=''):    //先让中间名字形参默认为空

if middle_name:    //用if语句判断

    full_name=first_name+" "+middle_name+" "+last_name    //有中间名字时加上实参

else:

    full_name=first_name+" "+last_name

return full_name.title()

musician=get_formatted_name('jimi','hendrix2')

print(musician)

musician=get_formatted_name('john','hooker','lee')

print(musician)

-->Jimi Hendrix2

    John Lee Hooker

2.3 返回字典

def build_person(first_name,last_name):

    person={'first':first_name,'last':last_name}

    return person

musician=build_person('tom','smith')

print(musician)

-->{'first': 'tom', 'last': 'smith'}

3、传递列表

def greet_users(names):    //形参是一个列表

    for name in names:

        msg="Hello, "+name.title()+"!"

        print(msg)

usernames=['hahana','ty','margot']

greet_users(usernames)

-->Hello, Hahana!

    Hello, Ty!

    Hello, Margot!

3.1 在函数中修改列表

def print_models(unprinted_designs,completed_models):

    while unprinted_designs:

        current_design=unprinted_designs.pop()

        print("Printiing model: "+current_design)

        completed_models.append(current_design)

def show_completed_models(completed_models):

    print("\nThe following models have been printed:")

    for completed_model in completed_models:

        print(completed_model)

unprinted_designs=['iphone case','robot pendant','dodecahedron']

completed_models=[]

print_models(unprinted_designs,completed_models)

show_completed_models(completed_models)

-->Printiing model: dodecahedron    //每个函数只负责一项具体的工作

    Printiing model: robot pendant

    Printiing model: iphone case

    The following models have been printed:

    dodecahedron

    robot pendant

    iphone case

4、传递任意数量的实参

def make_pizza(*toppings):    //形参*toppings中的星号让Python创建一个名为toppings的空元组

    print(toppings)    

make_pizza('pepperoni')

make_pizza('mushrooms','green peppers','extra cheese')

-->('pepperoni',)

    ('mushrooms', 'green peppers', 'extra cheese')

4.1 结合使用位置参数和任意数量实参

def make_pizza(size,*toppings):

    print("\nMaking a "+str(size)+"-inch pizza with the following toppings:")

    for topping in toppings:

        print("-"+topping)

make_pizza(16,'pepperoni')

make_pizza(12,'mushrooms','green peppers','extra cheese')

-->Making a 16-inch pizza with the following toppings:

    -pepperoni

    Making a 12-inch pizza with the following toppings:

    -mushrooms

    -green peppers

    -extra cheese

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

def build_profile(first,last,**user_info):    #形参**user_info中的两个星号让Python创建一个空字典,须放于形参最后位置

    profile={}

    profile['first-name']=first

    profile['last-name']=last

    for k,v in user_info.items():

        profile[k]=v

    return profile

a=build_profile('albert','einstein',location='princeton',field='physics')

print(a)

-->{'first-name': 'albert', 'last-name': 'einstein', 'location': 'princeton', 'field': 'physics'}

5、将函数存储在模块中

5.1 导入整个模块

pizza.py

def make_pizza(size,*toppings):

    print("\nMaking a "+str(size)+"-inch pizza with the following toppings:")

    for topping in toppings:

        print("-"+topping)

同目录下making_pizza.py

import pizza     //引用pizza则pizza.py中所有函数都能用

pizza.make_pizza(16,'pepperoni')

pizza.make_pizza(12,'mushrooms','green peppers','extra cheese')

5.2 导入特定的函数

from module_name import function_name

通过用逗号分隔函数名,导入任意数量的函数

from module_name import function_0,function_1,function_2

5.3 使用as给函数指定别名

from module_name import function_name as fn

5.4 使用as给模块指定别名

import module_name as mn

5.5 导入模块中的所有函数

from module_name import *    #星号(*)运算符可导入模块中的所有函数

注意:所有的import语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容