Python学习笔记第九天

每日一句:理想即寻觅目标的思维。

函数

带名字的代码块,可以用于减少重复代码

# 1.定义函数def
def great_user():# 指定函数名
    """显示简单的问候语"""# 文档字符串的注释,用于描述该函数是干什么用的
    print("Hello!!!")# 函数体
# 调用函数,执行函数代码块
great_user()
Hello!!!
# 向函数传递信息
# 实参和形参
def great_user(user_name):
    """显示简单的问候语"""
    print("Hello,"+user_name.title()+" !")
great_user('lisa')
great_user('jesse')
# 其中,user_name属于形参,没有具体指定人名'lisa','jesse'属于实参,有具体指定人名
# 当函数调用,随即将实参传递给great_user()实参存储到形参user_name中
Hello,Lisa !
Hello,Jesse !

传递实参

位置参数

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')
describe_pet('dog','willie')
# describe_pet(x,y),x,y需要按顺序存储
I have a hamster.
My hamster 's name is Harry.

I have a dog.
My dog 's name is Willie.
 

关键字实参

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(animal_type='hamster',pet_name='harry')
describe_pet(pet_name='willie',animal_type='dog')
# 明确指出实参存储在哪个形参上,可以不按顺序
I have a hamster.
My hamster 's name is Harry.

I have a dog.
My dog 's name is Willie.

默认值

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='harry')
describe_pet(animal_type='hamster',pet_name='harry')
# 设置animal_type为'dog',调用函数只提供pet_name,输出时会默认输出animal_type='dog
# 当调用函数时,实参animal_type,pet_name都传递到形参中,会忽略默认值
# 参数过少并且没有指定默认值或过多,或没有指定实参,,调用该函数会报错
I have a dog.
My dog 's name is Harry.

I have a hamster.
My hamster 's name is Harry.

返回值

def get_formatted_name(first_name,last_name):
    """返回整洁的姓名"""
    full_name=first_name+' '+last_name
    return full_name.title()
msician=get_formatted_name('jimi','hendrix')
print(msician)
# 把调用函数传递给形参,return 返回值 full_name.title()
Jimi Hendrix
# 让实参变成可选的
def get_formatted_name(first_name,last_name,middle_name=' '):
    """返回整洁的姓名"""
    if middle_name:
        full_name = first_name +' '+ middle_name +' '+ last_name
    else:
        full_name= first_name +' '+ last_name
    return full_name.title()
msician=get_formatted_name( 'jimi' , 'hendrix' )
print(msician)
msician=get_formatted_name( 'john' , 'hooker' , 'lee' )
print(msician)
Jimi   Hendrix
John Lee Hooker

返回字典

def build_person(first_name,last_name):
    """返回一个字典,其中包含一个人的信息"""
    person={'first':first_name,'last':last_name}
    return person
msician=build_person('jimi','hendrix')
print(msician)
# 接收实参传递的值,封装到字典中
{'first': 'jimi', 'last': 'hendrix'}
 
def build_person(first_name,last_name,age=''):
    """返回一个字典,其中包含一个人的信息"""
    person={'first':first_name,'last':last_name}
    if age:
        person['age']=age
    return person
msician=build_person('jimi','hendrix')
print(msician)
msician=build_person( 'john' , 'hooker' ,18 )
print(msician)
{'first': 'jimi', 'last': 'hendrix'}
{'first': 'john', 'last': 'hooker', 'age': 18}

结合使用函数和while循环

def get_formatted_name(first_name,last_name):
    """返回整洁的姓名"""
    full_name=first_name+' '+last_name
    return full_name.title()
# 这是一个无限循环
active=True
# while True:
while active:
    print("\nPlease tell me your name:")
    f_name=input("first_name: ")
    l_name=input("last_name: ")
    formatted_name=get_formatted_name(f_name,l_name)
    print("\nHello, "+formatted_name+"!")
    active=False
# 没有设置退出循环的标志,while一直判断为True,循环一直进行下去
Please tell me your name:
first_name: aa
last_name: bb

Hello, Aa Bb!
def get_formatted_name(first_name,last_name):
    """返回整洁的姓名"""
    full_name=first_name+' '+last_name
    return full_name.title()
while True:
    print("\nPlease tell me your name:")
    print("(enter 'q'at any time to quit)")
    f_name=input("first_name: ")
    if f_name=='q':
        break
    l_name=input("last_name: ")
    if l_name=='q':
        break
    formatted_name=get_formatted_name(f_name,l_name)
    print("\nHello, "+formatted_name+"!")
Please tell me your name:
(enter 'q'at any time to quit)
first_name: lisi
last_name: wangwu

Hello, Lisi Wangwu!

Please tell me your name:
(enter 'q'at any time to quit)
first_name: q

猜你喜欢

转载自www.cnblogs.com/python-study-notebook/p/12701878.html