python-函数

1.函数

1.1. 定义函数

def sayHello():
    """问候"""
    print('Hi')

sayHello()  # Hi

1.1.1 向函数传递信息

def sayHello(friend):
    print("Hi," + friend.title() + '!')

sayHello("Tom")  # Hi,Tom!
sayHello("Carl")  # Hi,Carl!

1.2. 传递实参

1.2.1 位置实参

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

def score_info(stu_name, stu_score):
    print(stu_name.title() + ": " + stu_score)

score_info('tom', '85')
score_info('carl', '90')
# Tom: 85
# Carl: 90

1.2.2 关键字实参

def group(user_name, user_age):
    print(user_name.title() + ': ' + user_age)

group(user_name='tom', user_age='20')
group(user_age='25', user_name='carl')
# Tom: 20
# Carl: 25

1.2.3 默认值

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

def score(user_name, user_grade='A'):
    print(user_name.title() + ": " + user_grade)

score('Ann')
score('mary', 'B')
score(user_name='carl')
score(user_name='potter', user_grade='C')
score(user_grade='C', user_name='lily')
score('jack', user_grade='B')
# Ann: A
# Mary: B
# Carl: A
# Potter: C
# Lily: C
# Jack: B

1.3. 返回值

1.3.1 返回简单值

def user(username, age):
    info = username + ": " + age
    return info.title()

user1 = user('tom', '13')
print(user1)
# Tom: 13

1.3.2 实参变成可选的

注意:

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

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

def user_info(user_name, user_age, user_gender=''):
    if user_gender:
        info = user_name.title() + ": " + user_age + " " + user_gender
    else:
        info = user_name.title() + ": " + user_age
    return info

user1 = user_info('tom', '18')
print(user1)
user2 = user_info('jack', '24', 'female')
print(user2)
# Tom: 18
# Jack: 24 female

1.3.3 返回字典

def user(user_name, user_age, user_gender=''):
    person = {
        'name': user_name.title(),
        'age': user_age
    }
    if user_gender:
        person['gender'] = user_gender
    return person

user1 = user('tom', '20', 'female')
user2 = user('jack', '19')
print(user1)
print(user2)
# {'name': 'Tom', 'age': '20', 'gender': 'female'}
# {'name': 'Jack', 'age': '19'}

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

def user(user_name, user_age):
    info = user_name.title() + ": " + str(user_age)
    return info

while True:
    print("if you want to quit:'z'")
    userName = input('userName: ')
    if userName == 'z':
        break
    userAge = input('userAge: ')
    if userAge == 'z':
        break
    info = user(userName, userAge)
    print(info)

# if you want to quit:'z'
# userName: tom
# userAge: 18
# Tom: 18
# if you want to quit:'z'
# userName: z

1.5. 传递列表

def sayHello(names):
    for name in names:
        print('Hello, ' + name.title() + '!')

users = ['tom', 'jack']
sayHello(users)
# Hello, Tom!
# Hello, Jack!

1.5.1 在函数中修改列表

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

def registerFun(unregisterList, registeredList):
    while unregisterList:
        registeredList.append(unregisterList.pop())

def showRegistered(registeredList):
    for user in registeredList:
        print(user.title() + " has already registered!")

unregisterList = ['tom', 'jack']
registeredList = []
registerFun(unregisterList, registeredList)
showRegistered(registeredList)
# Jack has already registered!
# Tom has already registered!

1.5.2 禁止函数修改列表

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

def registerFun(unregisterList, registeredList):
    while unregisterList:
        registeredList.append(unregisterList.pop())

def showRegistered(registeredList):
    for user in registeredList:
        print(user.title() + " has already registered!")

def showUnregister(unregisterList):
    for user in unregisterList:
        print(user)

unregisterList = ['tom', 'jack']
registeredList = []
registerFun(unregisterList[:], registeredList)
showRegistered(registeredList)
# Jack has already registered!
# Tom has already registered!

print("Unregister users:\n")
showUnregister(unregisterList)
# tom
# jack

1.6. 传递任意数量的实参

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

def get_users(*username):
    print(username)

get_users('tom', 'jack', 'carl')
get_users('mary')
# ('tom', 'jack', 'carl')
# ('mary',)

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

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

def comLanguage(number, *languageList):
    print(number)
    print(languageList)

comLanguage(3, 'python', 'Java')
comLanguage(1, 'c++')

# 3
# ('python', 'Java')
# 1
# ('c++',)

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

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

def user_info(user_name, user_age, **user_info):
    userInfo = {'userName': user_name.title(), 'userAge': user_age}
    for k, v in user_info.items():
        userInfo[k] = v
    return userInfo

user = user_info('tom', 15, user_gender='male', user_hobby='soccer')
print(user)
# {'userName': 'Tom', 'userAge': 15,
#  'user_gender': 'male', 'user_hobby': 'soccer'}

2. 将函数存储在模块中

2.1. 导入整个模块

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

  • hello_world.py中:

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

import hello_world
hello_world.sayHello()  # 你好

2.2. 导入特定的函数

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

  • hello_world.py中:

def sayHello():
    print('你好')

def user():
    print('用户你好')

def user1():
    print('用户1你好')
  • apply.py中:

from hello_world import sayHello, user

sayHello()
user()
# 你好
# 用户你好

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

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

  • apply.py中:

from hello_world import sayHello as sH, user as us

sH()
us()
# 你好
# 用户你好

2.3.1 使用as给模块指定别名

注意:import 模块名 as 别名

  • apply.py中:

import hello_world as hw

hw.sayHello()
# 你好

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

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

  • apply.py中:

from hello_world import *

sayHello()
user()
# 你好
# 用户你好
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值