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

相关文章
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
4天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
17 3
|
机器学习/深度学习 人工智能 Python
|
6天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
5天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。
|
6天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
6天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
|
7天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。