python的函数

function 的参数传递 python的变量是一个对象的引用,变量与变量之间的赋值是对同一个对象的引用,当变量重新赋值对象的时候,是将变量指向一个新的对象。

python实参向形参传送数据的方式是值传递。

def change(a,b):
    """
     python交换2 个值
    """
    a,b=b,a   
>>> a,b=2,3
>>> change(a,b)
>>> print("a={} b={}".format(a,b))
a=2 b=3

python可以通过,可变对象修改参数,比如list和dictionary。

def change(lt):
    """
     python交换2 个值
    """
    lt[0],lt[1]=lt[1],lt[0]
>>> lt
[3, 2]
>>> change(lt)
>>> lt
[2, 3]

可变长度的参数,程序设计中会遇到参数不固定的情况。这时候就需要使用可变长度的函数参数来实现相关功能。python中有2 中可变参数,dict和dictionary

def display_tulp(*tp):
    for elem in tp:
        print("element={}".format(elem),end=",")
>>> t1=1,2,3
>>> display_tulp(*t1)
element=1,element=2,element=3,
>>> t2=11,22,33,55,66
>>> display_tulp(t2)
element=(11, 22, 33, 55, 66),

其它类型的参数,必须在可变参数之前,如 fun(name,old=66,*sub)

字典可变长的参数 在dictionary中,关键字为参数名,值为相应的参数,其放在函数参数最后以**开头的参数。

def display_dict(**dict):
    for item in dict.keys:
        print("{}:,{}".format(item,dict[item]))

出现了一点错误

>>> a={1:'a',2:'b'}
>>> display_dict(**a)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    display_dict(**a)
TypeError: display_dict() keywords must be strings

这个二分查找,递归下标有点小问题。

def find(lt,k,l,r):
    count=0
    count+=1
    mid=(l+r)//2
    if lt[mid]==k:
        return mid+1
    elif lt[mid]>k:
        find(lt,k,0,mid-1)
    else:
        find(lt,k,mid+1,len(lt))
    if count>len(lt)+1:
        return -1

变量的作用域。

在一个函数体内,或者语句块内定义的变量 称为局部变量。局部变量,自在定义的局部块内有效。

在函数之外定义的变量,称为全局变量,它可以被多个函数引用。

在函数体内,要为全局变量赋值,可以使用global语句,表明变量是全局的。

def display(x,y):
    global x
    x=68
    y=22
    print(" no2: x={0},y={1}".format(x,y))

x=11
y=111

匿名函数,使用lambda表达式 lambda [参数1,[参数2,参数3。。。参数n]]:表达式

:冒号前面的是参数,后面表达式,但是在表现形式上只返回一个值。

>>> f=lambda x,y:x+y
>>> f(2,6)
8

模块,可以理解为一个.py的文件。 import name ,导入模块。 导入特定的属性或者库, from 模块名 import name

大约,就是这样,python的 文件,异常,面向对象,图形。 争取5篇文章内,搞得,在水一下,爬虫,科学计算, 不在玩了,我已经 把语法糖拿下来了。 准备转入j2se,j2ee,这是我的主攻。 还有科学技术,作图,spider等,怎么学习,有人,给一个意见没有,感觉这里面函数参数,太多。手上没有好的书籍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全沾开发(huā)

搞懂JavaScript中的连续赋值

搞懂JavaScript中的连续赋值 前段时间老是被一道题刷屏,一个关于连续赋值的坑。 遂留下一个笔记,以后再碰到有人问这个题,直接...

41260
来自专栏JetpropelledSnake

Python入门之迭代器/生成器/yield的表达方式/面向过程编程

 本章内容     迭代器     面向过程编程       一、什么是迭代       二、什么是迭代器       三、迭代器演示和举例       四、生...

30690
来自专栏WD学习记录

数据结构与算法2016-06-03

一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接调用自己,就称这个算法是递归的。根据调用方式的不同,它...

8520
来自专栏风中追风

为什么要重写hashcode和equals方法?

因为默认的equals方法是Object的方法,比较的是内存地址;而默认的hashcode方法返回的是对象的内存地址转换成的一个整数,实际上指的的也是内存,两个...

44290
来自专栏大闲人柴毛毛

稳扎稳打JavaScript(一)——作用域链内存模型

几个概念 在开始之前,先了解几个概念。 1.1. 作用域 作用域是指当前正在执行的代码能够访问到变量的范围; 每个函数都有各自的作用域,存储函数所有的局部变量...

48380
来自专栏老九学堂

稳准狠!最全讲解!初学者必看的C语言字符串知识

字符数组和普通数组一样,也是通过下标引用各个元素。 【示例】输出字符数组中的元素。

9910
来自专栏逆向技术

C语言_第二讲_规范以及常用数据类型

一丶编码规范基本数据类型 编码规范 任何程序员,都应该有良好的的编码习惯,便于以后的代码可读性和维护 常见了编码规范有 匈牙利命名法 驼峰式大小写 匈牙利命名法...

26800
来自专栏章鱼的慢慢技术路

C++笔试面试题整理

封装来源于信息隐藏的设计理念,是通过特性和行为的组合来创建新数据类型让接口与具体实现相隔离。

1.3K30
来自专栏微信公众号:Java团长

Java进阶01 String类

之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础。在Java进阶中,我将对Java基础进行补充,并转向应用层面。

9320
来自专栏开发与安全

C++的引用与const指针的关系以及各种传递方式

首先我们知道 const int *p 与 int const *p 是一样的,即 *p 是常量;而 int * const p 跟上面是不一样的,即 p 是常...

20470

扫码关注云+社区

领取腾讯云代金券