一、什么是命名关键字参数?

格式: 在*后面参数都是命名关键字参数。

特点:1、约束函数的调用者必须按照Kye=value的形式传值。

   2,、约束函数的调用者必须用我们指定的Key名。

def auth(*args,name,pwd):
print(name,pwd) auth(pwd='',name='egon') def register(name,age):
print(type(name),type(age)) register(123,[1,2,3])

###以上输出:

egon 213
<class 'int'> <class 'list'>

二、函数的嵌套

1、函数的嵌套调用:在函数内又调用了其他函数

def max2(x,y):
if x > y:
return x
else:
return y
def max3(x,y,z):
res1=max(x,y)
res2=max(res1,z)
return res2
print(max3(88,99,100))

###以上输出:

100

2、函数的嵌套定义:在函数内又定义其他函数。

def func1():
print('from func1')
def func2(): #func2=内存地址
print('from func2') print(func2) #<function func1.<locals>.func2 at 0x0000024907A098C8>
func2()
func2()
func2() func1()

###以上输出:

from func2
from func2
from func2

三、函数的名称空间

1、名称空间:存放名字与值绑定关系的地方

x=888888888
def func():
pass

2、名称空间分为三类

(1)内置名称空间:存放python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效。

(2)全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效。

x=1
def f1():
def f2():
print(x)
f2()
f1() if 10 > 3:
y=33333 while True:
xxxxx=123123123

###以上输出:

1

(3)局部名称空间:存放函数自定义的名字(函数的参数以及函数内的名字都存放与局部名称空间),在函数调用时临时生效,函数结束则失效。

注意:

加载顺序:内置名称空间-------->>全局名称空间------->>>局部名称空间

查找名字:局部名称空间-------->>全局名称空间------->>>内置名称空间

def f1():
# len=1
def f2():
# len=2
print(len)
f2() f1()

###以上输出:

global

3、作用域

全局作用域:包涵的是内置名称空间与全局名称空间的名字。

特点:

(1)在任何位置都能够访问的到

(2)该范围内的名字会伴随程序整个生命周期

局部作用域:包含的是局部名称空间的名字

特点:

(1)只在函数内使用

(2)调用函数时生效,调用结束失效

四、函数对象

1、函数在python中是第一类对象

(1)可以被引用

x=1
y=x def bar():
print('from bar') f=bar
f()

###以上输出:

from bar

(2)可以当做参数传入

x=1
def func(a):
print(a) func(x)

###以上输出:

1

(3)可以当做函数的返回值

#代码(1)
x=1
def foo():
return x res=foo()
print(res)

###以上输出:

1

代码(2)
def bar():
print('from bar') def foo(func): #func=<function bar at 0x00000225AF631E18>
return func #return <function bar at 0x00000225AF631E18> # print(bar)
f=foo(bar) #f=<function bar at 0x00000225AF631E18>
# print(f)
f()

###以上输出:

from bar

(4)可以当做容器类型的元素

x=1
l=[x,] print(l) def get():
print('from get') def put():
print('from put') l=[get,put] # print(l)
l[0]()

###以上输出:

[1]
from get

注意:

1、 func可以被引用

  f=func

2、func可以当做参数传给x

3、func还可以当做返回值

4、可以当做容器中类型的元素

函数查询登录功能的引用:

def auth():
print('请登录:')
def reigster():
print('注册:')
def search():
print('查看:')
def transfer():
print('转账')
def pay():
print('支付') dic={
'':auth,
'':reigster,
'':search,
'':transfer,
'':pay
} def interactive():
while True:
print('''
1 认证
2 注册
3 查看
4 转账
5 支付
'''
)
choice = input('请输入编号:').strip()
if choice in dic:
dic[choice]()
else:
print('非法操作') interactive()

五、闭包函数

闭:指的是定义在函数内部的函数

  作用域关系,在函数定义阶段就规定死了,与调用位置无关

def outter():
x=2
def inner():
# x=1
print('from inner',x) return inner f=outter() #f=inner def foo():
x=1111111111111111111111111111
f() foo()

###以上输出:

from inner 2

1、闭包函数:

(1)定义在函数内部的函数

(2)并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数

了解:

为函数体传值的方式

方式一:将值以参数的形式的传入

  利用爬虫获取网站的源代码:

import requests:

def get(url):
response=requests.get(url)
if response.status_code == 200:
print(response.text) get('https://www.baidu.com')

方式二

import requests
import time def outter(url): #url='https://www.baidu.com' # url='https://www.baidu.com'
def get():
response=requests.get(url)
if response.status_code == 200:
print(response.text) return get baidu=outter('https://www.baidu.com')
python=outter('https://www.python.org') baidu()
print('=====================>')
time.sleep(3) baidu()

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. Excel 2010高级应用-折线图(二)

    在Excel中画折线图,具体操作过程如下: 1.新建一个excel文件,双击打开 2.单击"插入",找到折线图,单击下拉框 3.在折线框下方,新建数据源 4.鼠标右键,选择&quo ...

  2. freemarker自定义标签报错(六)

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered "\"\u4f60\u597d\uff01\& ...

  3. freemarker写select组件报错总结(七)

    1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  4. E: 未发现软件包 install_flash_player_11_linux.x86_64.tar.gz

    1 错误描述 youhaidong@youhaidong:~$ sudo apt-get install install_flash_player_11_linux.x86_64.tar.gz 正在读 ...

  5. spring ioc(反转控制)

    在Java中,我们建立一个对象的方式是new,有时需要单例,有时需要工厂,而spring中的bean的定义可以直接使用,如scope属性single产生单例对象,prototype产生新对象,bean ...

  6. STL(set_pair)运用 CF#Pi D. One-Dimensional Battle Ships

    D. One-Dimensional Battle Ships time limit per test 1 second memory limit per test 256 megabytes inp ...

  7. ASP.NET CSS 小结

    1.ASP.NET 引用CSS 1.Site.master里面设置webopt <webopt:bundlereferencerunat="server"path=" ...

  8. 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)

    [BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...

  9. Luogu P3412 仓鼠找$sugar$ $II$

    Luogu P3412 仓鼠找\(sugar\) \(II\) 题目大意: 给定一棵\(n\)个点的树, 仓鼠每次移动都会等概率选择一个与当前点相邻的点,并移动到此点. 现在随机生成一个起点.一个终点 ...

  10. 【BZOJ3626】LCA(树链剖分,Link-Cut Tree)

    [BZOJ3626]LCA(树链剖分,Link-Cut Tree) 题面 Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1. ...