zoukankan      html  css  js  c++  java
  • python入到到实战--第八章

    第八章 函数

    定义函数

    关键字def

    def get_name():

      print("测试函数代码")

    调用函数

    get_name()

    向函数传递信息------在函数的括号内添加需要传递的信息

    实参和形参

    在函数定义时,函数括号内的参数是形参;

    在调用函数时,函数括号内的参数是实参;

    传递参数----还可以使用列表和字典

    位置实参:实参的顺序和形参的顺序相同---------顺序很重要,如果顺序错误,则实际结果会跟预期结果差别

    关键字实参:每个实参由变量名和值组成;

    位置实参

    def test1(abc, bcd):

      print(abc + " " + bcd)

    test("1111","222")  >>>1111 2222

    关键字实参:

    def test2(abc, bcd):
    print(abc + " " + bcd)

    test2(abc = "1111",bcd = "222") >>>1111 2222

    默认值:

    编写函数时,可以给每个形参指定默认值,调用函数时,如果提供了实参,则使用指定的参数,否则将使用形参的默认值。

    def test3(abc="00000"):

      print(abc)

    test3()  >>>00000

    test3("789") >>>789

    当有多个形参,而实参个数少与形参个数时,根据实参顺序和形参顺序进行匹配。

    可混合使用位置实参、关键字实参和默认值,

    避免实参错误:

    调用函数时,未指定任何实参

    出现traceback 错误时,请确保函数调用和函数定义匹配。

    返回值:函数返回的值称为返回值

    调用有返回值的函数时,需要提供一个变量,用户存储返回的值。

    让实参变为可选的--------在定义函数时,给形参添加使用默认值。

    返回字典:

    def build_person(first_name, last_name):
    """返回一个字典, 其中包含有关一个人的信息"""
       person = {'first': first_name, 'last': last_name}
       return person


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

    结合使用函数和while 循环 :

    def get_formatted_name(first_name, last_name):
      """返回整洁的姓名"""
      full_name = first_name + ' ' + last_name
      return full_name.title()

    # 这是一个无限循环!
    while True:
       print(" Please tell me your name:")

      f_name = input("First name: ")
      l_name = input("Last name: ")
      formatted_name = get_formatted_name(f_name, l_name)
      print(" Hello, " + formatted_name + "!")
    =========================

    增加循环退出条件

    def get_formatted_name(first_name, last_name):
    """返回整洁的姓名"""
      full_name = first_name + ' ' + last_name
      return full_name.title()
    while True:
      print(" Please 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(" Hello, " + formatted_name + "!")
    =========================

    传递列表

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


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



    在函数中修改列表:

    将列表传递给函数后, 函数就可对其进行修改。 在函数中对这个列表所做的任何修改都是永久性的, 这让你能够高效地处理大量的数据。
    禁止函数修改列表 :向函数传递列表的副本而不是原件; 这样函数所做的任何修改都只影响副本, 而丝毫不影响原件
    要将列表的副本传递给函数, 可以像下面这样做 :function_name(list_name[:])     ----------切片表示法[:] 创建列表的副本。

    传递任意数量的实参 --预先不知道函数需要接受多少个实参,python函数允许函数从调用语句中收集任意数量的实参。
    def make_pizza(*toppings):
    """打印顾客点的所有配料"""
      print(toppings)
    make_pizza('pepperoni')
    make_pizza('mushrooms', 'green peppers', 'extra cheese')

    解释:形参名*toppings 中的星号让Python创建一个名为toppings 的空元组, 并将收到的所有值都封装到这个元组中。 

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

    如果要让函数接受不同类型的实参, 必须在函数定义中将接纳任意数量实参的形参放在最后。

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

    将函数存储在模块中
    导入整个模块 import module_name

    调用模块的函数:module_name.function()

    模块 是扩展名为.py的文件 。
    导入特定的函数  from module_name  import function_name001, function002

    调用函数:直接函数名调用,不需要使用模块名.函数名的方式调用

    使用as 给函数指定别名 -----函数名太长或者函数名冲突时,方便使用

    from module_name import function_name as  f_n

    使用as 给模块指定别名 ---import module_name as  m_n

    导入模块的所有函数---from module_name import *

    函数编写指南

    1、给函数指定描述性名称,只使用小写字母和下划线

    2、每个函数应该包含简要阐述其功能的注释,注释位置应该是定义函数的后面

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

    4、函数调用时,关键字实参的等号两边不要有空格

    5、形参列表比函数体多缩进一层

    6、使用4个空格缩进

  • 相关阅读:
    LeetCode 122 best-time-to-buy-and-sell-stock-ii 详解
    LeetCode 763划分字母区间 详解
    LeetCode 861翻转矩阵后得分详细解法
    DES算法的python3实现
    LeetCode 309 Best Time to Buy and Sell Stock with Cooldown 解决方案
    Android Studio Gradle build 报错:Received status code 400 from server: Bad Request
    Error:Failed to resolve: com.android.support:recyclerview-v7:28.0.0解决方法
    身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    小程序跳转方式如:(wx.navigateTo)
    requset.js 封装promise的请求方法
  • 原文地址:https://www.cnblogs.com/beidou93/p/9909885.html
Copyright © 2011-2022 走看看