python笔记基础--函数(5)

目录

1.定义函数def

2.传递实参

2.1位置实参

2.2关键字实参

2.3默认值

3.返回值

3.1返回简单值

3.2实参可选

3.3返回字典

3.4结合使用函数和while循环

4.传递列表

5.传递任意数量的实参

5.1结合使用位置实参和任意数量实参size,*xx

5.2使用任意数量的关键词实参**xxx

6.将函数存储在模块中

6.1导入整个模块

6.2导入函数

6.3使用as给模块指定别名

7.函数编写


1.定义函数def

函数定义

def greet_user(): #定义函数
    #显示简单问候语
    print("Hello World!")

greet_user()#调用函数

Hello World!

向函数传递信息

def greet_user(username): #定义函数
    #显示简单问候语
    print(f"Hello,{username.title()}")

greet_user('dylan')#调用函数

Hello,Dylan

形参:username,函数完成工作所需的信息

实参:’dylan’,调用函数时传递给函数的信息

2.传递实参

传递方式:位置实参(要求实参的顺序与形参的顺序相同)

          关键字实参(每个实参都由变量名+值组成)

          列表和字典

2.1位置实参

将函数调用中的每个实参都关联到函数定义中的一个形参。

注:顺序一定要正确

def describe_pet(animal_type, pet_name):
    #显示宠物信息
    print(f"I have a {animal_type}.")
    print(f"My {animal_type}'s name is {pet_name.title()}.")

describe_pet('hamster', 'harry')

I have a hamster.

My hamster's name is Harry.

多次

调用

函数

describe_pet('hamster', 'harry')
describe_pet('cat', '包子')

I have a hamster.

My hamster's name is Harry.

I have a cat.

My cat's name is 包子.

2.2关键字实参

传递给函数的名称值对。无需考虑函数调用中的实参顺序。

describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='包子', animal_type='cat')

I have a hamster.

My hamster's name is Harry.

I have a cat.

My cat's name is 包子.

2.3默认值

给每个形参指定默认值。调用时没有给定实参,使用默认值

def describe_pet(pet_name='Dylan',animal_type='dog'):
    ……
describe_pet()

I have a dog.

My dog's name is Dylan.

def describe_pet(pet_name,animal_type='dog'):

……

describe_pet(pet_name='harry')

describe_pet(pet_name='harry',animal_type='cat')

I have a dog.

My dog's name is Harry.

I have a cat.

My cat's name is Harry.

如果调用未说明实参给谁,则优先给没有默认值的那一个。

如果调用给了所有实参,则按照顺序依次赋值

注:不可以def describe_pet(pet_name='Ann',animal_type)默认值要放到最后,不能放到前面

3.返回值

返回值:函数返回的值。函数并非直接显示输出,还可以处理一些数据,并返回一个或一组值。

可使用return语句将值返回到调用函数的代码行。

3.1返回简单值

def get_formatted_name(first_name,last_name):
    full_name = f"{first_name} {last_name}"
    return full_name.title()
musician = get_formatted_name('jem','harry')
print(musician)

Jem Harry

3.2实参可选

不是所有情况都需要给所有实参赋值。

当实参中有值不需要时,可以先为这个实参设置默认是,再加入条件语句

def get_formatted_name(first_name,last_name,middle_name=''):
    if middle_name:
        full_name = f"{first_name} {middle_name} {last_name}"
    else:
        full_name = f"{first_name} {last_name}"
    return full_name.title()
A= get_formatted_name('jem','harry')
print(A)
B = get_formatted_name('jem','harry','lee')
print(B)

Jem Harry

Jem Lee Harry

3.3返回字典

def buile_person(first_name,last_name):
    person = {'first':first_name, 'last':last_name}
    return person
A=buile_person('jem','herry')
print(A)

{'first': 'Jem', 'last': 'herry'}

def buile_person(first_name,last_name,age=None):
    person = {'first':first_name, 'last':last_name}
    if age:
        person['age']=age
    return person
A=buile_person('jem','herry',age=99)
print(A)

{'first': 'jem', 'last': 'herry', 'age': 99}

3.4结合使用函数和while循环

def buile_person(first_name,last_name):
    full_name = f"{first_name} {last_name}"
    return full_name

while True:
    print(f"请告诉我你的名字:")
    print(f"(直到用户输入q时退出循环)")
    f_name = input("first name:")
    if f_name == 'q':
        break
    l_name = input("last name:")
    if l_name == 'q':
        break


formatted_name = buile_person(f_name,l_name)
print(f"\nHello,{formatted_name}")

请告诉我你的名字:

(直到用户输入q时退出循环)

first name:ann

last name:jee

请告诉我你的名字:

(直到用户输入q时退出循环)

first name:q

Hello,q jee

4.传递列表

将列表传递给函数,函数就能直接访问其内容。

函数

遍历列表

def greet_users(names):
    #向列表中的每位用户发出简单的问候
    for name in names:
        msg = f"Hello,{name.title()}!"
        print(msg)


usernames = ['Ann','ty','mar']
greet_users(usernames)

Hello,Ann!

Hello,Ty!

Hello,Mar!

在函数中

修改列表

#1.创建一个列表,其中包含一些要打印的设计
un_designs = ['phone','robot','TV']
com_models = []
#模拟打印每个设计,直到没有未打印的设计为止
#打印每个设计后,将其移到列表com_models中
while un_designs:
    cur_designs = un_designs.pop() #删除列表末尾
    print(f"Printing moder:{cur_designs}")
    com_models.append(cur_designs) #末尾添加

#显示打印好的所有模型
print("\nThe following models have been printed:")
for com_model in com_models:
    print(com_model)

Printing moder:TV

Printing moder:robot

Printing moder:phone

The following models have been printed:

TV

robot

phone

def print_models(un_designs,com_models):
        while un_designs:
        cur_designs = un_designs.pop()
        print(f"Printing moder:{cur_designs}")
        com_models.append(cur_designs)
def show_com_models(com_models):
    print("\nThe following models have been printed:")
    for com_model in com_models:
        print(com_model)

un_designs = ['phone','robot','TV']
com_models = []

print_models(un_designs,com_models)
show_com_models(com_models)

禁止函数

修改列

print_models(un_designs[:],com_models)

切片

5.传递任意数量的实参

预先不知道需要接受多少个实参。

def make_pizza(*toppings):
    print(toppings)
make_pizza('pepperoni')
make_pizza('peppers','mushrooms','sugar')

('pepperoni',)

('peppers', 'mushrooms', 'sugar')

def make_pizza(*toppings):
    print("\nThe toppings:")
    for topping in toppings:
        print(f"- {topping}")
make_pizza('pepperoni')
make_pizza('peppers','mushrooms','sugar')

The toppings:

- pepperoni

The toppings:

- peppers

- mushrooms

- sugar

5.1结合使用位置实参和任意数量实参size,*xx

def make_pizza(size, *toppings):
make_pizza(16,'pepperoni')
make_pizza(20,'peppers','mushrooms')

The 16 toppings:

- pepperoni

The 20 toppings:

- peppers

- mushrooms

5.2使用任意数量的关键词实参**xxx

def build_p(first, last, **user_info):
    """创建一个字典,包含关于用户的一切"""
    user_info['first_name'] = first
    user_info['last_name'] = last
    return user_info

user_p = build_p('abc','def',location='prt',f='j')
print(user_p)

{'location': 'prt',

 'f': 'j',

'first_name': 'abc',

'last_name': 'def'}

6.将函数存储在模块中

将函数存储在称之为模块的独立文件中,再将模块导入到主程序中,

import语句:允许在当前运行的程序文件中使用模块中的代码。

6.1导入整个模块

模块扩展名:.py,包含要导入到程序中的代码。

pizza.py

def make_pizza(size,*toppings):
    print(f"The {size} topping:")
    for topping in toppings:
        print(f"---{topping}")

making_pizza.py

import pizza  #导入模块pizza.py

pizza.make_pizza(16,'sugar')
pizza.make_pizza(43,'green','sugar')

The 16 topping:

---sugar

The 43 topping:

---green

---sugar

6.2导入函数

①导入所有函数:from pizza import *

②导入特定函数

导入model_name.py中的function_name函数from model_name import function_name
导入model_name.py中的funtion_0, funtion_1, funtion_2函数

from model_name import funtion_0, funtion_1, funtion_2

making_pizza.py

导入pizza.py中的make_pizza的函数

from pizza import make_pizza

6.3使用as给模块指定别名

例如,给模块pizza指定别名p :import pizza as p

7.函数编写

函数指定描述性名称:小写字母 和 下划线

①给形参指定默认值时,等号两边不要有空格:

def function_name(parameter_0,parameter_1='default value')

②函数调用关键字,等号两边不要有空格:function_name(value_0,parameter_1='value')

相关推荐

  1. python笔记基础--函数5

    2024-03-24 22:36:02       32 阅读
  2. 七、python函数基础

    2024-03-24 22:36:02       22 阅读
  3. python函数基础详解

    2024-03-24 22:36:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 22:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 22:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 22:36:02       82 阅读
  4. Python语言-面向对象

    2024-03-24 22:36:02       91 阅读

热门阅读

  1. 养成类游戏为何具有吸引力及其心理效应探究

    2024-03-24 22:36:02       43 阅读
  2. 搭建NTP服务并读取本地时间

    2024-03-24 22:36:02       37 阅读
  3. 排序方法总结

    2024-03-24 22:36:02       44 阅读
  4. 深入理解RCNN:区域建议与区域兴趣池化技术解析

    2024-03-24 22:36:02       38 阅读
  5. 使el-dialog实现弹窗拖拽

    2024-03-24 22:36:02       43 阅读