定义函数:

 def greet_users(names): #names是形参
"""Print a simple greeting to each user in the list."""
for name in names:
msg = "Hello, " + name.title() + "!"
print(msg) usernames = ['hannah', 'ty', 'margot']
greet_users(usernames)#usernames是实参

关键字def来定义一个函数。实参是调用函数时传递给函数的的信息。

调用函数时,把实参传递给函数,这个值被存储在形参中。PS:大脑中有这个概念,至于如何使用,按实际情况来考虑。

传递实参:

 def describe_pet(pet_name, animal_type='dog'):
#关联方式:位置实参;animal_type指定了默认名。若调用函数未给形参提供实参,则使用默认名。
"""Display information about a pet."""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".") # A dog named Willie.
describe_pet('willie')
describe_pet(pet_name='willie') # A hamster named Harry.
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
#使用关键词实参,务必准确地指定函数定义的形参名
describe_pet(animal_type='hamster', pet_name='harry')
  • 1.调用函数多次
  • 2.位置实参的顺序很重要

 返回值:

 def get_formatted_name(first_name, last_name, middle_name=''):、
#让实参变成可选的,形参=‘空字符串’。
"""Return a full name, neatly formatted."""
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)

 返回字典:

 def build_person(first_name, last_name, age=''):
"""Return a dictionary of information about a person."""
person = {'first': first_name, 'last': last_name}
if age:
person['age'] = age
return person
#返回字典,将值封装到字典中
musician = build_person('jimi', 'hendrix', age=27)
print(musician)

传递列表:

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

 def greet_users(names):
"""Print a simple greeting to each user in the list."""
for name in names:
msg = "Hello, " + name.title() + "!"
print(msg) usernames = ['hannah', 'ty', 'margot'] #列表调用定义的函数,将列表传递给形参。
greet_users(usernames)

在函数中修改列表:

 def print_models(unprinted_designs, completed_models):                 #定义函数1
"""
Simulate printing each design, until there are none left.
Move each design to completed_models after printing.
"""
while unprinted_designs:
current_design = unprinted_designs.pop() # Simulate creating a 3d print from the design.
print("Printing model: " + current_design)
completed_models.append(current_design) #在函数中修改列表 def show_completed_models(completed_models): #定义函数2
"""Show all the models that were printed."""
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)

导入函数:

from 模块 import 函数 as 简标记

*代表所有函数

python函数-易错知识点的更多相关文章

  1. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  2. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  3. JavaScript易错知识点整理[转]

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  4. JS易错知识点

    JAVASCRIPT易错知识点整理 前言 本文是学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由 ...

  5. JavaScript易错知识点

    JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...

  6. Java易错知识点(1) - 关于ArrayList移除元素后剩下的元素会立即重排

    帮一个网友解答问题时,发现这样一个易错知识点,现总结如下: 1.易错点: ArrayList移除元素后,剩下的元素会立即重排,他的 size() 也会立即减小,在循环过程中容易出错.(拓展:延伸到所有 ...

  7. Python入门---易错已错易混淆----知识点

    1.not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 结果会输出啥? 根据优先级:(not 1) or (0 and 1) or (3 a ...

  8. [置顶] 单片机C语言易错知识点经验笔记

    今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...

  9. Python的易错点

    一.列表和元组的区别 列表是允许修改的,而元组是不能修改的,元组只能实现拼接,形成一个新的元组.两者可以实现相互转换,列表转换成元组使用truple函数,而元组转换成列表使用list函数. 二.Raw ...

随机推荐

  1. Django-rest-framework源码分析(三)

    APIView(二) 在APIView执行dispatch()方法的时候,它不仅做了分发函数的功能,还进行了一系列的校验. Django的全局校验一般写在中间件中,但是rest_framework于D ...

  2. 开发一个健壮的npm包

    项目地址:loan-calculate-utils npm包的发布.更新查看上一篇文章 开发一个基础的npm包 目前我们的目录是这个样子: . ├── source 源代码目录 │   └── ind ...

  3. 使用charAt()方法查找字符串

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  4. shell getopts 用法

    http://www.cnblogs.com/xupeizhi/archive/2013/02/18/2915659.html http://blog.csdn.net/xluren/article/ ...

  5. SpringBoot整合Springfox-Swagger2

    前言 不管Spring Boot整合还是SpringMVC整合Swagger都基本类似,重点就在于配置Swagger,它的精髓所在就在于配置. @ 目录 1.Swagger简介 2.整合前可能遇到的问 ...

  6. EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

    以 EF 为代表的基于 Linq 的 ORM 框架总是 很重. 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数 ...

  7. 1061 Dating (20分)

    Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4hhGE 2984akDfkkkkg ...

  8. 浅谈头文件(.h)和源文件(.cpp)的区别

    浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...

  9. 基于redis的订单号生成方案

    目前,比较火的nosql数据库,如MongoDB,Redis,Riak都提供了类似incr原子行操作. 下面是PHP版的一种实现方式: <?php /** * 基于Redis的全局订单号id * ...

  10. 深度解析Java中的5个“黑魔法”

    现在的编程语言越来越复杂,尽管有大量的文档和书籍,这些学习资料仍然只能描述编程语言的冰山一角.而这些编程语言中的很多功能,可能被永远隐藏在黑暗角落.本文将为你解释其中5个Java中隐藏的秘密,可以称其 ...