#encoding: utf-8

#定义函数
def f():
    print("hello")

#函数的调用
f()

#传递实参
def f(temp):
    print("hello " + temp)

f('shihao')

#返回字典 
def build_person(first_name, last_name):
    person = {'first': first_name, 'last': last_name}
    return person
temp = build_person('jimi', 'hendrix')
print(temp)

#向函数传递列表
print("\n")
def great_users(names):
    for name in names:
        msg = "Hello, " + name.title() + '!'
        print(msg)

usernames = ['hannah', 'try', 'marggot']
great_users(usernames)

#禁止函数修改列表
#切片表示法[:]创建列表的副本,对副本的操作不会影响原来的列表
#function_name(list_name[:])

#传递任意数量的实参
print("\n")
def make_pizza(*toppings):
    """打印顾客点的所有配料"""
    print(toppings)

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

#python 先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中
print("\n")
def make_pizza(size, *toppings):
    for top in toppings:
        print(top)

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


#导入整个模块
import pizza
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

#导入特定的函数
from pizza import make_pizza
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

#使用as给函数指定别名
from pizza import make_pizza as mp
mp(16, 'prepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')

#使用as给模块指定别名
import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

#导入模块中的所有函数
from pizza import *
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')