vimer linux kernel 爱好者

python函数知识点

2017-06-14

简介

相信函数大家都比较熟悉了,这里就是简单的记录一点。

def greet_user(username):
	""" 显示简单语句"""
	print("hello, " + username.title() + ".")

greet_user('yubo')

上面就是简单的一个函数原型和调用的方法。首先,python定义函数需要关键词def表明这是一个函数定义。后面紧接着是函数名称,括号里面是形参,你可以简单的理解为参数。参数就是你需要处理的数据,它可有可无,这个不是必须的。按照python的语法结构,这个语法块就是一个整体,不可分割。一般的函数还有返回值,这个函数显性没有返回值,但是它会向调用者打印一串字符串

传递参数

# 默认值, 比如,上面的用法就是可以这样的:
def greet_user(username = 'yubo'):
	...

# 实参变成可选的,下面这个函数有三个参数,这样的话,你的形参不可缺少

def get_formatted(first_name, middle_name, last_name):
    """ 返回全名"""
    full_name = first_name + ' ' + middle_name +  ' ' + last_name;
    return full_name.title()

name = get_formatted('bo', 'zi', 'bo')
print(name)

### 将参数用空值符表示出来,同时判断条件
def get_formatted(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()

name_1 = get_formatted('Bo', 'yu')
name_2 = get_formatted('bo', 'yu', 'zi')

print(name_1)
print(name_2)
# 看下面的这个函数,有意思
def get_formatted(first_name, last_name):
    full_name = first_name + ' ' + last_name
    return full_name.title()

while True:
    print("\n Please input your name\n")
    print("enter 'q' to quit the exam:\n")

    f_name = raw_input("First name:")
    if f_name == 'q':
        break
    l_name = raw_input("Last name:")
    if l_name == 'q':
        break

    formatted = get_formatted(f_name, l_name)
    print(formatted)

# 传递列表
def greet_user(names):
    for name in names:
        print("Hello, " + name.title() + "!")

name_list = ['yubo', 'hechun','xiaoxiao']
greet_user(name_list)

# 在函数中修改列表
def print_list(unprinted_designs, complete_models):
    """ 模拟打印每个设计,直到没有未打印的设计为止"""
    while unprinted_designs:
        current_design = unprinted_designs.pop()

        # 模拟根据设计制作3D打印
        print("Printing model: " + current_design)
        complete_models.append(current_design)

def show_list(complete_models):
    """ 显示打印好的模型"""
    print("\n The following models have been printed")
    for complete_model in complete_models:
        print(complete_model)

unprinted_designs = ['iphone', 'robot', 'winphone']

complete_models = []

print_list(unprinted_designs, complete_models)
show_list(complete_models)

# 禁止函数修改列表,则要将列表的副本传递给函数,比如,上面的例子:
print_list(unprinted_designs[:], complete_models)
# 不过,你除非有充足的理由这样做,否则这样会花时间和内存创建副本,
#这样会影响效率

# 向函数传递任意多的参数, 需要在形参名字前面加上星号(*)
def make_pizza(*topping):
    print(topping)
""" 当然,实参位置还是需要注意的"""
make_pizza('yubo')

make_pizza('hechun', 'xiaoxiao')

# 使用任意数量的关键字实参
def build_profile(first, last, **user_info):
    """创建一个字典, 其中包含我们知道的一切"""
    profile = {}
    profile['first_mane'] = first;
    profile['last_name'] = last;

    for key, value in user_info.items():
        profile[key] = value

    return profile

user_profile = build_profile('bo', 'yu',
        location = 'Qingdao', phone = '123')

print(user_profile)

Comments

Content