Python编程入门到实践 - 笔记( 8 章)

简介:

第 8 章主要练习了各种函数,内容如下

定义一个简单的函数

向函数传递信息

什么是形参

什么是实参

位置参数

多次调用函数

关键字实参

默认值参数

返回值 return

让参数编程可选的

返回字典

结合使用函数和 while 循环

传递列表

在函数中修改列表

传递任意数量的实参

传递任意数量的参数并循环打印

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

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

导入整个模块

导入特定的函数

使用 as 给函数指定别名

使用 as 给模块指定别名

导入模块中所有的函数



定义一个简单的函数

直接调用函数,就能打印

--------------------------

def greet_user():    
     print("Hello!")     
greet_user()

---------------------------

Hello!



向函数传递信息

username 只是一个形参

------------------------------------------------------

def greet_user(username):    
     print("Hello, " + username.title() + "!")     
greet_user('zhao')

------------------------------------------------------

Hello, Zhao!

 


什么是形参?

以上面的代码为例。username 就是形参,它只代表 greet_user 这个函数需要传递一个参数

至于它是叫 username 还是 nameuser 都无所谓

什么实参?

以上面的代码为例。’zhao’ 就是实参,一句话总结就是真正要让代码执行的参数



置实参

函数括号中指定了位置实参的顺序

输入参数必须按照形参提示操作

总之就是位置实参的顺序很重要

-------------------------------------------------------------------------------------------

def describe_pet(animal_type, pet_name):    
     print("\nI have a " + animal_type + ".")     
     print("My " + animal_type + "'s name is " + pet_name.title() + ".")     
describe_pet('hamster', 'harry')

-------------------------------------------------------------------------------------------

I have a hamster.    
My hamster's name is Harry.



多次调用函数

------------------------------------------------------------------------------------------

def describe_pet(animal_type, pet_name):    
     print("\nI have a " + animal_type + ".")     
     print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet('hamster', 'harry')    
describe_pet('dog', 'willie')

------------------------------------------------------------------------------------------

I have a hamster.    
My hamster's name is Harry.

I have a dog.    
My dog's name is Willie.



关键字实参

调用函数的时候,连同形参指定实参,就算是位置错了也能正常调用

------------------------------------------------------------------------------------------

def describe_pet(animal_type, pet_name):    
     print("\nI have a " + animal_type + ".")     
     print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet(animal_type='hamster', pet_name='harry')    
describe_pet(pet_name='willie', animal_type='dog')

------------------------------------------------------------------------------------------

I have a hamster.    
My hamster's name is Harry.

I have a dog.    
My dog's name is Willie.



默认值

在设定函数 describe_pet 形参中指定一个参数,调用的时候

可以不用指定,默认就能调用

------------------------------------------------------------------------------------------

def describe_pet(pet_name, animal_type='dog'):    
     print("\nI have a " + animal_type + ".")     
      print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet(pet_name='willie')

------------------------------------------------------------------------------------------

I have a dog.    
My dog's name is Willie.


还可以更简单的调用

------------------------------------------------------------------------------------------

def describe_pet(pet_name, animal_type='dog'):    
     print("\nI have a " + animal_type + ".")     
     print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet('willie')

------------------------------------------------------------------------------------------

I have a dog.    
My dog's name is Willie.



返回值

return  full_name.title()  将 full_name 的值转换为首字母大写格式

并将结果返回到函数调用行

变量 full_name  的行中两个 + 中间的单引号中间需要有一个空格

如果没有空格,打印出来的效果也是两个

-----------------------------------------------------------------

def get_formatted_name(first_name, last_name):    
     full_name = first_name + ' ' + last_name     
     return  full_name.title()

musician = get_formatted_name('jimi', 'hendrix')    
print(musician)

-----------------------------------------------------------------

Jimi Hendrix



让参数变成可选的

Python将非空字符串解读为 True,如果没有 middle_name 参数,执行 else 代码

必须确保 middle_name 参数是最后一个实参

-----------------------------------------------------------------------------------------

def get_formatted_name(first_name, last_name, middle_name=''):    
     if middle_name:     
          full_name = first_name + ' ' + middle_name + ' ' + last_name     
      else:     
          full_name = first_name + ' ' + last_name     
      return full_name.title()

musician = get_formatted_name('jimi', 'hendrix')    
print(musician)

musician = get_formatted_name('john', 'hooker', 'lee')    
print(musician)

-----------------------------------------------------------------------------------------

Jimi Hendrix    
John Lee Hooker



返回字典

----------------------------------------------------------------

def build_person(first_name, last_name):    
     person = {'first': first_name, 'last': last_name}     
     return person

musician = build_person('jimi', 'hendrix')    
print(musician)

----------------------------------------------------------------

{'first': 'jimi', 'last': 'hendrix'}



以上面的代码为例,增加一个形参 age,并将其设置为空字符串

如果用户输入了姓名,就将其添加到字典中

-----------------------------------------------------------------    

def build_person(first_name, last_name, age=''):    
     person = {'first': first_name, 'last': last_name}     
     if age:     
          person['age'] = age     
     return person

musician = build_person('jimi', 'hendrix', age=18)    
print(musician)

-----------------------------------------------------------------

{'first': 'jimi', 'last': 'hendrix', 'age': 18}



结合使用函数和 while 循环

如果用户输入 q,可以随时退出

----------------------------------------------------------------------------------

def get_formatted_name(first_name, last_name):   
     full_name = first_name + ' ' + last_name    
     return full_name.title()


while True:    
     print("\nPlease tell me your name:")    
     print("(enter 'q' at any time to quit)")

     f_name = input("First name: ")   
      if f_name == 'q':    
          break    
     l_name = input("Last name: ")    
     if l_name == 'q':    
          break


     formatted_name = get_formatted_name(f_name, l_name)    
     print("\nHello, " + formatted_name + "!")

----------------------------------------------------------------------------------

Please tell me your name:   
(enter 'q' at any time to quit)    
First name: zhao    
Last name: lulu

Hello, Zhao Lulu!

Please tell me your name:   
(enter 'q' at any time to quit)    
First name: q



传递列表

函数中的 greet_users( ) names 参数只是一个形参,

而实参则是要传入的列表

----------------------------------------------------

def greet_users(names):   
     for name in names:    
          msg = "Hello, " + name.title() + "!"    
          print(msg)

usernames = ['hannah', 'ty', 'margot']   
greet_users(usernames)

----------------------------------------------------

Hello, Hannah!   
Hello, Ty!    
Hello, Margot!



在函数中修改列表

-------------------------------------------------------------------------------------------

unprinted_models = ['iphone case', 'robot pendant', 'dodecahedron']   
completed_models = []

while unprinted_models:   
     current_design = unprinted_models.pop()    
     print("Printing model: " + current_design)    
     completed_models.append(current_design)

print("\nThe following models have been printed:")   
for completed_model in completed_models:    
     print(completed_model)

-------------------------------------------------------------------------------------------

Printing model: dodecahedron   
Printing model: robot pendant    
Printing model: iphone case

The following models have been printed:   
dodecahedron    
robot pendant    
iphone case


重新组织以上代码,用函数的方式调用

-------------------------------------------------------------------------------------------

def print_models(unprinted_designs, completed_models):   
     while unprinted_designs:    
          current_design = unprinted_designs.pop()

          print("Printing model: " + current_design)   
          completed_models.append(current_design)

def show_completed_models(completed_models):   
     print("\nThe following models have been printed:")    
     for completed_model in completed_models:    
          print(completed_model)

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']   
completed_models = []

print_models(unprinted_designs, completed_models)   
show_completed_models(completed_models)

-------------------------------------------------------------------------------------------

Printing model: dodecahedron   
Printing model: robot pendant    
Printing model: iphone case

The following models have been printed:   
dodecahedron    
robot pendant    
iphone case


   

传递任意数量的实参

-----------------------------------------------------------------------------

def make_pizza(*toppings):   
     print(toppings)

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

-----------------------------------------------------------------------------

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



传递任意数量的参数并循环打印

----------------------------------------------------------------------------

def make_pizza(*toppings):   
     print("\nMaking a pizza with the following toppings:")    
     for topping in toppings:    
          print("- " + topping)

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

----------------------------------------------------------------------------

Making a pizza with the following toppings:   
- pepperoni

Making a pizza with the following toppings:   
- mushrooms    
- green peppers    
- extra cheese



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

-----------------------------------------------------------------------------------------------------

def make_pizza(size, *toppings):   
     print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")    
      for topping in toppings:    
          print("- " + topping)

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

-----------------------------------------------------------------------------------------------------

Making a 17-inch pizza with the following toppings:   
- pepperoni

Making a 19-inch pizza with the following toppings:   
- mushrooms    
- green peppers    
- extra cheese



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

先定义一个空列表

for 循环中将参数添加到 profile 字典中,并用 return 返回

---------------------------------------------------------------

def build_profile(first, last, **user_info):   
     profile = {}    
     profile['first_name'] = first    
     profile['last_name'] = last    
     for key, value in user_info.items():    
          profile[key] = value    
     return profile

user_profile = build_profile('albert', 'einstein',   
                              location='princeton',    
                              field='physics')    
print(user_profile)

---------------------------------------------------------------

{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}



导入整个模块

pizza.py 文件内容如下

------------------------------------------------------------------------------------------------------

def make_pizza(size, *toppings):   
     print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")    
     for topping in toppings:    
          print("- " + topping)

making_pizzas.py 文件内容如下

----------------------------------------------------------------------------------------

import pizza

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

----------------------------------------------------------------------------------------

Making a 16-inch pizza with the following toppings:   
- pepperoni

Making a 12-inch pizza with the following toppings:   
- mushrooms    
- green peppers    
- extra cheese



导入特定的函数

---------------------------------------------------------------------------------

from pizza import make_pizza

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

---------------------------------------------------------------------------------

Making a 16-inch pizza with the following toppings:   
- pepperoni

Making a 12-inch pizza with the following toppings:   
- mushrooms    
- green peppers    
- extra cheese  


  

使用 as 给函数指定别名

--------------------------------------------------------------------

from pizza import make_pizza as mp

mp(16, 'pepperoni')   
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 *

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

本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1965495

相关文章
|
11天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
108 47
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
116 80
|
12天前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
29 2
|
23天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
40 14
|
18天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
80 15
|
1月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
83 2
|
1月前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
存储 监控 API
Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir)
Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir)
78 0