5. 函数

Python函数代码块以 def 关键词开头; 函数内容以冒号起始,并且缩进。
  *注: python中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
    前者传递的只是值的拷贝,不影响对象本身; 后者传递的是对象的地址,会改变对象本身

*5.1 参数:

1. 位置参数(必选参数):

   调用函数时,传入的值按照位置顺序依次赋给每个位置参数

2. 默认参数:

def power(x, n=2):   或   def enroll(name, gender, age=6, city='Beijing'):

  *注1:只有在与默认参数不符时才需要设置,可简化函数参数调用复杂度。注意:默认参数必须指向不变对象!

  *注2:调用函数时,缺省参数的值如果没有传入,则被认为是默认值;(默认参数的设置,默认参数必须指向不变对象)

  *注3:当你要用一个做运算的变量时候,千万不要用默认参数指定,默认地址第二次调用不会重新实例化一次

3.可变参数: *args

def calc(*numbers):
  sum = 0
  for n in numbers:
    sum = sum + n * n
  return sum
可使用 nums = [1, 2, 3]  或  (1,2,3) ####  calc(*nums)  在 list 或 tuple 前面加一个 * 号,把 list 或 tuple 的元素变成可变参数传进去

  

4.关键字参数:**kw 扩展函数功能
  (场景:用户注册时,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。)

def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
可以传入任意个数的关键字参数:person('Adam', 45, gender='M', job='Engineer')

  *注1:*args 是可变参数,args接收的是一个tuple;
      **kw 是关键字参数,kw接收的是一个dict。
      可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
      关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
      使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

  *注2:使用关键字参数允许函数调用时参数的顺序与声明时不一致;

5.命名关键字参数:特殊分隔 * , * 后面的参数被视为命名关键字参数,限制调用者可以传入的参数名。如;只接收city和job作为关键字参数

def person(name, age, *, city, job):
print(name, age, city, job)

  如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name, age, *args, city, job):
print(name, age, args, city, job)

6.参数组合:
  参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
  对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

7.全局变量和局部变量
  定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

参考廖雪峰教程:

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

python笔记2:函数的更多相关文章

  1. Python:笔记(2)——函数与模块

    Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...

  2. python笔记之函数

    函数 >>> def funTest(param1): ... 'this is function document string.' #正文需要有缩进 ... return par ...

  3. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

  4. python笔记4 - 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  5. Python笔记008函数(2)

    1.        昨日内容回顾: def 函数(): 函数体 return 值 如果不写return,默认返回None.可以单独返回一个值,也能够以元组的形式返回多个值.(不要把print和retu ...

  6. python笔记-字符串函数总结

    字符串函数: chr() 数字转ASCII chr(96)="a" ord() ASCII转数字 ord("a")=96 isspace() 判断是否为空格 s ...

  7. Python笔记:调用函数,带扩号和和不带括号的区别

    调用函数,如果带括号,那么是调用函数运行后的结果, 调用函数不带括号,调用的是函数本身 例如: def cun (a,b): return a+b print(cun) : 调用函数,打印的是函数 p ...

  8. Python笔记-built-in函数,文件操作,lambda函数

    Built-In: i = abs(123) print(i) j = abs(-123) print(j)#123#123 #all,需要传一个可迭代的东西,里面所有的值是真,返回真 r1 = al ...

  9. 【python笔记】Qt+云函数 实现简单的登录框制作

    [python笔记]Qt+云函数 实现简单的登录框制作 备注:前置条件:QtDesigner.pycharm.PyQt5.配置好的云函数(百度的叫函数计算CFC,用来充当一个简陋的服务器,主要是免费) ...

  10. Python学习笔记7-把函数当参数传递、指定可变参数

    把函数当参数传递 # 函数参数传递 # 面向对象编程就是把对象传来传去 # 面向函数编程就是把函数传来传去 def mytest(num): return num * 2 # # 不光可以传递变量,还 ...

随机推荐

  1. 【Python学习之六】高阶函数1(map、reduce、filter、sorted)

    1.map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.示例: >>> def ...

  2. day3- python 注册

    # .先把文件内容的账号密码放到list/字典 f = open('users') result = f.read() f.close() user_list = result.split() # u ...

  3. linux文件属性之linux文件删除原理

    Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count和i_nlink. i_count的 ...

  4. 《linux设备驱动开发详解》笔记——8阻塞与非阻塞IO

    8.1 阻塞与非阻塞IO 8.1.0 概述 阻塞:访问设备时,若不能获取资源,则进程挂起,进入睡眠状态:也就是进入等待队列 非阻塞:不能获取资源时,不睡眠,要么退出.要么一直查询:直接退出且无资源时, ...

  5. python3 简单服务器监控,自动发送邮件

    import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimpo ...

  6. python模块之datetime

    相比于time模块,datetime模块的接口则更直观.更容易调用 datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day: ...

  7. python之绝对导入和相对导入

    绝对导入 import sys, os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_DIR) ...

  8. LeetCode(122) Best Time to Buy and Sell Stock II

    题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...

  9. install mongodb on macos

    Update Homebrew’s package database. In a system shell, issue the following command: brew update 2 In ...

  10. Leetcode37--->Sudoku Solver(填充数独)

    题目: 给定一个不完整的数独,要求填充好数独:最初给出的数独是有效的,且假设一定有答案: 举例: A sudoku puzzle... 解题思路: 该题与青蛙走迷宫问题很相似,都是用深度优先: 代码如 ...