当前位置:   article > 正文

python-函数_python对用户输入的人名给出一些不同的回应。

python对用户输入的人名给出一些不同的回应。

1.函数

1.1. 定义函数

  1. def sayHello():
  2. """问候"""
  3. print('Hi')
  4. sayHello() # Hi

1.1.1 向函数传递信息

  1. def sayHello(friend):
  2. print("Hi," + friend.title() + '!')
  3. sayHello("Tom") # Hi,Tom!
  4. sayHello("Carl") # Hi,Carl!

1.2. 传递实参

1.2.1 位置实参

关联方式:基于实参的顺序

  1. def score_info(stu_name, stu_score):
  2. print(stu_name.title() + ": " + stu_score)
  3. score_info('tom', '85')
  4. score_info('carl', '90')
  5. # Tom: 85
  6. # Carl: 90

1.2.2 关键字实参

  1. def group(user_name, user_age):
  2. print(user_name.title() + ': ' + user_age)
  3. group(user_name='tom', user_age='20')
  4. group(user_age='25', user_name='carl')
  5. # Tom: 20
  6. # Carl: 25

1.2.3 默认值

使用默认值,在形参列表里,必须先列出非默认值的形参,再是有默认值的形参。调用函数中的实参按位置实参来处理。

  1. def score(user_name, user_grade='A'):
  2. print(user_name.title() + ": " + user_grade)
  3. score('Ann')
  4. score('mary', 'B')
  5. score(user_name='carl')
  6. score(user_name='potter', user_grade='C')
  7. score(user_grade='C', user_name='lily')
  8. score('jack', user_grade='B')
  9. # Ann: A
  10. # Mary: B
  11. # Carl: A
  12. # Potter: C
  13. # Lily: C
  14. # Jack: B

1.3. 返回值

1.3.1 返回简单值

  1. def user(username, age):
  2. info = username + ": " + age
  3. return info.title()
  4. user1 = user('tom', '13')
  5. print(user1)
  6. # Tom: 13

1.3.2 实参变成可选的

注意:

  • 给实参指定一个默认值—空字符串,并移到形参列表末尾

  • python对于空字符串的布尔值为False

  1. def user_info(user_name, user_age, user_gender=''):
  2. if user_gender:
  3. info = user_name.title() + ": " + user_age + " " + user_gender
  4. else:
  5. info = user_name.title() + ": " + user_age
  6. return info
  7. user1 = user_info('tom', '18')
  8. print(user1)
  9. user2 = user_info('jack', '24', 'female')
  10. print(user2)
  11. # Tom: 18
  12. # Jack: 24 female

1.3.3 返回字典

  1. def user(user_name, user_age, user_gender=''):
  2. person = {
  3. 'name': user_name.title(),
  4. 'age': user_age
  5. }
  6. if user_gender:
  7. person['gender'] = user_gender
  8. return person
  9. user1 = user('tom', '20', 'female')
  10. user2 = user('jack', '19')
  11. print(user1)
  12. print(user2)
  13. # {'name': 'Tom', 'age': '20', 'gender': 'female'}
  14. # {'name': 'Jack', 'age': '19'}

1.4. 结合使用函数与while循环

  1. def user(user_name, user_age):
  2. info = user_name.title() + ": " + str(user_age)
  3. return info
  4. while True:
  5. print("if you want to quit:'z'")
  6. userName = input('userName: ')
  7. if userName == 'z':
  8. break
  9. userAge = input('userAge: ')
  10. if userAge == 'z':
  11. break
  12. info = user(userName, userAge)
  13. print(info)
  14. # if you want to quit:'z'
  15. # userName: tom
  16. # userAge: 18
  17. # Tom: 18
  18. # if you want to quit:'z'
  19. # userName: z

1.5. 传递列表

  1. def sayHello(names):
  2. for name in names:
  3. print('Hello, ' + name.title() + '!')
  4. users = ['tom', 'jack']
  5. sayHello(users)
  6. # Hello, Tom!
  7. # Hello, Jack!

1.5.1 在函数中修改列表

注意:python在函数中对列表做的任何修改都是永久性的

  1. def registerFun(unregisterList, registeredList):
  2. while unregisterList:
  3. registeredList.append(unregisterList.pop())
  4. def showRegistered(registeredList):
  5. for user in registeredList:
  6. print(user.title() + " has already registered!")
  7. unregisterList = ['tom', 'jack']
  8. registeredList = []
  9. registerFun(unregisterList, registeredList)
  10. showRegistered(registeredList)
  11. # Jack has already registered!
  12. # Tom has already registered!

1.5.2 禁止函数修改列表

注意:如果不想修改原始列表,在传递列表时可以传递列表的副本。传实参List时,使用List[:]即可。

  1. def registerFun(unregisterList, registeredList):
  2. while unregisterList:
  3. registeredList.append(unregisterList.pop())
  4. def showRegistered(registeredList):
  5. for user in registeredList:
  6. print(user.title() + " has already registered!")
  7. def showUnregister(unregisterList):
  8. for user in unregisterList:
  9. print(user)
  10. unregisterList = ['tom', 'jack']
  11. registeredList = []
  12. registerFun(unregisterList[:], registeredList)
  13. showRegistered(registeredList)
  14. # Jack has already registered!
  15. # Tom has already registered!
  16. print("Unregister users:\n")
  17. showUnregister(unregisterList)
  18. # tom
  19. # jack

1.6. 传递任意数量的实参

注意:形参*param,表示将所有实参放入名为param的空元组中去。

  1. def get_users(*username):
  2. print(username)
  3. get_users('tom', 'jack', 'carl')
  4. get_users('mary')
  5. # ('tom', 'jack', 'carl')
  6. # ('mary',)

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

注意:python先匹配位置实参和关键字实参,再把余下的实参都收集到最后一个形参中,所以要把任意数量实参的形参放在函数定义中参数的最后位置。

  1. def comLanguage(number, *languageList):
  2. print(number)
  3. print(languageList)
  4. comLanguage(3, 'python', 'Java')
  5. comLanguage(1, 'c++')
  6. # 3
  7. # ('python', 'Java')
  8. # 1
  9. # ('c++',)

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

注意:我们想使用任意数量的关键字实参,则用**param,python对其创建了一个以param为名的空字典,用来接受任意数量的关键字实参。

  1. def user_info(user_name, user_age, **user_info):
  2. userInfo = {'userName': user_name.title(), 'userAge': user_age}
  3. for k, v in user_info.items():
  4. userInfo[k] = v
  5. return userInfo
  6. user = user_info('tom', 15, user_gender='male', user_hobby='soccer')
  7. print(user)
  8. # {'userName': 'Tom', 'userAge': 15,
  9. # 'user_gender': 'male', 'user_hobby': 'soccer'}

2. 将函数存储在模块中

2.1. 导入整个模块

注意:你有一个模块a.py,并且想在b.py中使用a.py里的所有函数,则可以这样使用:a.function_name()即可。

  • hello_world.py中:

  1. def sayHello():
  2. print('你好')
  • apply.py中:

  1. import hello_world
  2. hello_world.sayHello() # 你好

2.2. 导入特定的函数

注意:使用这种方法导入模块中的特定函数,可用from 模块名 import 函数1,函数2...。使用函数时,直接用函数名,不需要再用模块名.函数名了。

  • hello_world.py中:

  1. def sayHello():
  2. print('你好')
  3. def user():
  4. print('用户你好')
  5. def user1():
  6. print('用户1你好')
  • apply.py中:

  1. from hello_world import sayHello, user
  2. sayHello()
  3. user()
  4. # 你好
  5. # 用户你好

2.3. 使用as给函数指定别名

注意:关键字as将函数命名为你所提供的别名,语法:from 模块名 import 函数名 as 别名

  • apply.py中:

  1. from hello_world import sayHello as sH, user as us
  2. sH()
  3. us()
  4. # 你好
  5. # 用户你好

2.3.1 使用as给模块指定别名

注意:import 模块名 as 别名

  • apply.py中:

  1. import hello_world as hw
  2. hw.sayHello()
  3. # 你好

2.4. 导入模块中的所有函数

注意:from 模块名 import *,使用模块里的函数时直接用函数名去调用

  • apply.py中:

  1. from hello_world import *
  2. sayHello()
  3. user()
  4. # 你好
  5. # 用户你好
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/408419
推荐阅读
相关标签
  

闽ICP备14008679号