学习笔记:
传递实参:
位置实参、关键词实参(名称-值对:describe_pet(animal_type='hamster', pet_name='harry'))、默认值(:def describe_pet(pet_name, animal_type='dog'):)
传递任意数量的实参:
形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。
问题:形参不就是一个元组吗,为什么这样就说是接纳任意数量实参的形参?(通过一个元组来接纳任意数量实参的形参?那为什么不通过传递列表的方式?)
注:如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
使用任意数量的关键字实参:
形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称—值对都封装到这个字典中。在这个函数中,可以像访问其他字典那样访问user_info中的名称—值对。
将函数存储在模块中:
将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。
注:1.模块和主程序应在一个目录下;2.在将模块导入主程序之前,要先编译生成,否则主程序无法调用到模块。
导入一个函数:module_name.function_name()
导入特定的函数:from module_name import function_name(此时调用函数时就无需使用句点)
导入任意数量的函数:from module_name import function_0, function_1, function_2
给函数指定别名:from module_name import function_name as fn
给模块指定别名:import module_name as mn
导入模块中的所有函数:使用星号(*)运算符可让Python导入模块中的所有函数(此时调用函数时就无需使用句点)
注:要么只导入你需要使用的函数,要么导入整个模块并使用句点表示法。
★在python中函数必须先定义后调用!
★关于while循环:如果至少要执行一次循环,那么可以设置flag=True,然后while flag:……当满足退出条件时设置flag为False
★如果要复制列表,不可以用friend_foods = my_foods,这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个变量都指向同一个列表。在改变friend_foods时,my_foods也会改变。要:friend_foods = my_foods[:](切片表示法)(可从指针考虑)
★如果在for循环中需要i从0取到m-1,则for i in range(0,m):……注意:range是从0到m-1的,不能写成range(0,m-1)
看书随手写的代码:
def print_greet(username):
"""显示简单的问候语"""#文档字符串
print('hello '+username)
prompt='please type in your name: '
username=input(prompt)
print_greet(username)
def print_information(a,b):
print(name+"'s score is "+score)
information={'chency':'100','eva':'1000'}
for name,score in information.items():
print_information(name,score)
prompt1="please type in a new student's name: "
name_new=input(prompt1)
prompt2="please type in a new student's score: "
score_new=input(prompt2)
information[name_new]=str(score_new)
for name,score in information.items():
print_information(name,score)
def name(in_name):
return in_name.title()
prompt = "what's your name? "
in_name=input(prompt)
print(name(in_name))
def person_name(first_name,last_name,age=' '):
person={'first':first_name,'last':last_name}
if age!=' ':
person['age']=age
return person
a=input()
b=input()
print(person_name(a,b,age=20))
print(person_name(a,b))
def type_name(name):#要先定义函数
print(name)
while True:
prompt="please type in your name and if you want to quit you can type in 'q' :"
name=input(prompt)
if name != 'q':
type_name(name)#后调用函数
else:
break
def friend(*names):
print(names)
friend('a','b')
friend('s','d','x')
def persons(first,last,**other):
pro={}
pro['first_name']=first
pro['last_name']=last
for k,v in other.items():
pro[k]=v
return pro
pro=persons('chency','chen',location='nanjing',age='20')
print(pro)