可变长参数

形参

*形参

接收多余的位置实参,以元组形式保存

**形参

接收多余的关键字实参,以字典形式保存

实参

*实参

将元组类型打散,传给*形参

**实参

将字典类型打散,传给**形参

函数对象

  • 可以作为引用

    x = 'hello nick'
    y = x f = func
    print(f)
  • 作为容器元素

    l = [x]
    
    function_list = [func]
    function_list[0]()
  • 作为函数参数

    len(x)
    
    def foo(m):
    m() foo(func)
  • 作为函数函数返回值

    def foo(x):
    return x res = foo(func)
    print(res)
    res()

函数嵌套

打印九九乘法表

for i in range(1,10):
for j in range(1,i+1):
print(f"{i}*{j}={i*j}",end="")
print()

名称空间与作用域

名称空间

内置名称空间

放置内置方法

生命周期:在解释器启动时生效,在解释器关闭时失效

局部名称空间

函数中定义的变量和函数

生命周期:在函数调用期间生效,执行结束失效

全局名称空间

除了内置和局部都放在全局名称空间

生命周期:在文件执行时生效,文件结束后失效

执行顺序

内置--》全局--》局部

搜索顺序

从当前位置 局部--》全局--》内置

作用域

全局作用域

全局有效,全局存活

局部作用域

临时存储,只包含局部名称空间

global

修改全局作用域中的变量。

x = 1

def f1():
x = 2 def f2():
global x # 修改全局
x = 3
f2() f1()
print(x)

nonlocal

x = 1

def f1():
x = 2 def f2():
nonlocal x
x = 3 f2()
print(x) f1()

注意点:

在局部想要修改全局的可变类型,不需要任何声明,可以直接修改。

在局部如果想要修改全局的不可变类型,需要借助global声明,声明为全局的变量,即可直接修改。

lis = []

def f1():
lis.append(1) print(f"调用函数前: {lis}")
f1()
print(f"调用函数后: {lis}")

Python-函数基础(2)的更多相关文章

  1. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  2. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  3. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  4. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  5. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  6. python函数基础

    一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...

  7. python 函数基础介绍

    函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...

  8. Python函数基础学习(定义、函数参数、递归函数)

    1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...

  9. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  10. 4.python函数基础

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

随机推荐

  1. adb shell 查看内存信息

    1.根据包名来查看指定的APP指定数据adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数据没有参数名,可以参考这个命令来看:adb shel ...

  2. Codeforces 479【A】div3试个水

    题目链接:http://codeforces.com/problemset/problem/977/A 题意:这个题,题目就是让你根据他的规律玩嘛.末尾是0就除10,不是就-1. 题解:题解即题意. ...

  3. ECMAScript中所有参数传递的都是值,不可能通过引用传递参数

    今天在看JavaScript高级程序设计(第三版)时,看到了这个问题:ECMAScript中所有参数传递的都是值,不可能通过引用传递参数. 在我的印象中,其他语言比如Java,C++等,传递参数有两种 ...

  4. 未知高宽的div在其父级div中垂直居中显示

    (一)如果已知子div的高宽 .father { position: relative; } .child { width: 100px; height: 80px; position: absolu ...

  5. python_django_models模块

    django中models模块为各类数据库提供了统一的api,可根据不同的业务需求配置数据库. models模块开发流程: 配置数据库  详情:https://www.cnblogs.com/Vera ...

  6. wpf datagrid 如何自定义行的控件实例,(textbox 并选中则全选)

    主要是为了用户输入方便 按回车,选中下一列,text自动获取焦点,输入状态 获取控件实例  https://blog.csdn.net/m15188153014/article/details/486 ...

  7. [JZOJ4665] 【GDOI2017模拟7.21】数列

    题目 题目大意 给你一个数列,让你找到一个最长的连续子序列,满足在添加了至多KKK个数之后,能够变成一条公差为DDD的等差数列. 思考历程 一眼看上去似乎是一道神题-- 没有怎么花时间思考,毕竟时间都 ...

  8. 0704 Process继承实现多进程、Pool进程池,进程间通过队列通信,Pool实现多进程实现复制文件

    通过继承的方式,实现Process多进程 from multiprocessing import Process import time class MyNewProcess(Process): de ...

  9. thinkphp 静态路由

    静态路由其实属于规则路由的静态简化版(又称为URL映射),路由定义中不包含动态参数,静态路由不需要遍历路由规则而是直接定位,因此效率较高,但作用也有限. 如果我们定义了下面的静态路由 'URL_ROU ...

  10. Maven远程仓库地址修改(精)

    国内最快的maven镜像  阿里云maven镜像 <repositories> <repository> <id>spring-snapshots</id&g ...