(0.1)函数参数的定义方式

函数参数的定义方式:
位置形参
星号元组形参
命名关键字形参
双星字典形参

1.位置形参
语法:
def 函数名(形参名1,形参名2,…………):
语句块

例子:

    len(args))
        print("args =", args)def myadd(a, b, c, d):  abcd为位置形参
        return a + b + c + d 

星号元组形参:
语法:
def 函数名(*元组形参名):
语句块
作用: 收集多余的位置传参

例子:

    def func(*args):
        print("实参个数")

    func(1,2,3,4)
    func(1,2,3,4)
    不接受关键字传参

    关键字传参:
        语法:
            def 函数名 (*,命名关键字形参列表)
            def 函数名(*args,命名关键字形参)

双星号字典形参
语法:
def 函数名(**字典形参名):
作用:
用于收集多余的关键字传参

函数的参数说明:
  位置形参,星号元组形参,命名关键字形参,双星号字典形参和缺省形参可以混合使用

函数参数自左至右的顺序为:
    位置形参,星号元组形参,命名关键字形参,双星号字典形参

    def 

可以接收任意的位置传参和关键字传参的函数
def fn (*args, **kwargs):
pass

示例:
mymax函数与max功能相同

函数变量
函数名是变量,它创建一个函数时绑定一个函数

示例:
  def f() #f为变量,f绑定一个函数
        print("hello")
        print("world")
    f1 = f #注意f 没有加()
    f1()   #????

 示例2:
    def  f1():
         print("hello")
    def  f2():
         print("world")

    f1, f2 = f2, f1

一个函数可以做为另一个函数的参数
示例1:
def say_hello():
print("hello world")

def f2(f):
    print(f)
    f() #调用f变量绑定的函数

f2(say_hello)  #????

示例2:
def goodbye(L):
for x in L:
print("再见", x)

def hello(L):
for x in L:
print("您好", x)

def operator(fn, L):
fn(L)
#调用fn绑定的函数

operator(goodbye,["tom", "jerry"])

示例3:
def myadd(x, y)
return x + y
def mymul(x, y)
return x * y

def get_op(s):
if s == "加"
return myadd
elif s == "乘"

return mymul

s = input("请输入公式:")
L = s.split()
a = int(L[0])
b = int(L(2))
fn = get_op([L])
print("结果是:",fn(a, b)

函数的嵌套:
函数的嵌套是指一个函数用def语句来创建其他的函数的情况

示例:
 def fn_otter():
    print("fn_outter被调用!")
    def fn_inner():
        print("fn_inner():                  

全局变量和局部变量
局部变量
定义在函数内部的变量名称为局部变量(函数的形参也是局部变量)
局部变量只能在函数内部使用
局部变量在函数调用时被自动创建,在函数调用之后自动销毁
全局变量
定义在函数外部,模块内部的变量为全局变量
全局变量,所有的函数都可以直接访问(但函数内不能将其直接赋值)

python作用域
作用域也叫命名空间,是访问变量时查找变量名的范围空间

python的四个作用域LEGB
作用域
局部作用域(函数内) Local Function L
外部嵌套函数作用域 Enclosing function locals E
函数定义所在模块的作用域 Global(module) G
python内置模块作用域 Builtin(python) B

变量名的查找规则:
在访问比变量时,先查找本地变量,然后是包裹此函数的外部函数内的变量,之后是全局变量,最后是内置变量
 L -> E -> G -> B
示例:
注意: 在访问比变量时,先查找本地变量,然后是包裹此函数的外部函数内的变量,之后是全局变量,最后是内置变量

v = 100#全局变量
def fun1():
v = 200#局部变量,也是fun2外部嵌套的作用域的变量
def fun2():
v = 300#局部变量
print(v)
fun2()

fun1()

函数在找函数是以自内向外查找的方式………

删除本地的变量,全局变量就会被调用…………

python作用域
作用域也叫命名空间,是访问变量时查找变量名的范围空间

python的四个作用域LEFG
作用域
局部作用域(函数内) Local Function L
外部嵌套函数作用域 Enclosing function locals E
函数定义所在模块的作用域 Global(module) G
python内置模块作用域 Builtin(python) B

变量名的查找规则:
在访问比变量时,先查找本地变量,然后是包裹此函数的外部函数内的变量,之后是全局变量,最后是内置变量
 L -> E -> G -> B

在默认的情况下,变量赋值会创建或者修改本地作用域的变量

v = 100

def f():
print(v)
v = 200

f()

global语句
作用:
告诉解释器,global语句声明的一个或多个变量,这些变量的作用域为模块级的作用域,也称作全局变量
全局声明(global)将赋值变量映射到模块文件内部的作用域
语法:
global 变量1 变量2,…………

global声明:
全局变量如果要在函数内部被赋值,则必须经过全局声明(否则会被认为是全局变量)
全局变量在函数内部不经过声明就可以直接访问(如果变量已经在且关联一个对象)
不能声明局部变量,再用global声明为全局变量,次做法不符合规则
global变量列表里的变量名不能出现在此形参列表里
nonlocal语句
作用:
告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套内的变量

语法:
nonlocal  变量1 变量2 …………
示例:

说明:
 1.nonlocal语句只能在被嵌套的函数内部进行使用
   2.访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作
3.当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近的一层变量进行操作
  4.nonlocal语句的变量列表的变量名,不能出现在此函数的参数列表中

var = 100
2.
def outter():
var = 200
1.
def inner():
nonlocal var
var += 1
3:
inner()
print("outter.var=", var)

4.
outter()
print("global var=", var)

 示意:
def f1():
v = 100:
def f2():
v = 200:
def f3():
nonlocal v
f3():
f2():
f1():
练习:
def mysum(n):
....n < 0:
for x in
n = int(input("请输入一个整数:"))
print(mysum(n))

代码# mysum.py

def mysum(n):
#方法一: s = 0
for x in range(1, n + 1):

   s += x

return s
#方法二:
return sum(range(1, n + 1))
n = int(input("请输入一个整数:"))
print(mysum(n))

2.
给出一个数n写一个函数来计算n!(n的阶乘)
n! = 123*...n

3.
给出一个数n写一个函数来计算1+2**2 + 3**3 +...+n**n的和

原文地址:http://blog.51cto.com/12348050/2072453

时间: 2024-11-02 21:28:19

(0.1)函数参数的定义方式的相关文章

python中函数参数的引用方式

值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是"传对象引用"的方式.这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能直接修改原始对象--相当于通过"传值

第九讲 自定义函数参数预定义

首先自定义函数可有形参,也可以无形参. 也可以给一些参数设定一定的值,在函数调用的时候,可以对已设定预定值的参数不做赋值,也可以对已设定预定值的参数重新传入一个新值. 注:面向对象开发中也有这个性质 语法结构: def funC(para1,para2...parai=default_i,paran=default_n) code... code... ... return value1,value2...valuen eg1: def test_e(n1,n2=15):    n=n1+n2 

函数的定义,函数参数的定义和函数的调用

javascript函数定义方式及作用域

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

转:python 函数参数的传递(参数带星号的说明)

python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要有四种方式:1.F(arg1,arg2,...)这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的 值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应

函数指针及其定义和用法,C语言函数指针详解

函数指针大家了解一下就行了,用得不多,但一定要认识它. 什么是函数指针 如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址.而且函数名表示的就是这个地址.既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针. 那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的.例如: int(*p)(int, int); 这个语句就定义了

6.函数的定义方式,函数的参数问题

涉及内容: 函数的定义方式 函数的文字描述 空操作语句 位置参数 默认参数 关键参数 可变长度参数 函数的定义方式: 函数的文字说明: 为了让别人了解函数的意义,或者避免自己遗忘,可以使用    字符串(不需要赋值,单引号,双引号,多引号都行).#注释   将文字说明写在函数最开始的位置 def function1() : """ 这是这个程序的说明文字 """ print("hello function") return 1

五种函数定义方式----第五种是重点

//函数4要素:返回类型,函数名,参数列表,函数体//1.最简单的定义方式/*function show(){echo "hello"; }*///2.有函数的定义方式/*function show($a){echo a;}*///3.有默认值的函数定义/*function show($a="ccc"){ echo $a;}*///4.有返回值的函数定义/*function show($a,$b){  return $a+$b; }*///5.可变参数的函数定义  

JavaScript新手的第一堂函数课:定义与参数(文末福利)

关注微信公众号[异步图书]每周送书 本文包括以下内容: 理解函数为何如此重要 函数为何是第一类对象 定义函数的方式 参数赋值之谜 在本文这一部分讨论JavaScript基础时,也许你会感到惊讶,我们的第一个论点是函数(function)而非对象(object).当然,第3部分会用大量笔墨解释对象,但归根结底,你要理解一些基本事实,像普通人一样编写代码和像"忍者"一样编写代码的最大差别在于是否把JavaScript作为函数式语言(functional language)来理解.对这一点的