好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

位置参数

我们先写一个计算x 2 的函数:

 def power(x):
    return x * x
 

对于 power(x) 函数,参数 x 就是一个位置参数。

当我们调用 power 函数时,必须传入有且仅有的一个参数 x :

 >>> power(5)
25
>>> power(15)
225
 

现在,如果我们要计算x 3 怎么办?可以再定义一个 power3 函数,但是如果要计算x 4 、x 5 ……怎么办?我们不可能定义无限多个函数。

你也许想到了,可以把 power(x) 修改为 power(x, n) ,用来计算x n ,说干就干:

 def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
 

对于这个修改后的 power(x, n) 函数,可以计算任意n次方:

 >>> power(5, 2)
25
>>> power(5, 3)
125
 

修改后的 power(x, n) 函数有两个参数: x 和 n ,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数 x 和 n 。

默认参数

新的 power(x, n) 函数定义没有问题,但是,旧的调用代码失败了,原因是我们增加了一个参数,导致旧的代码因为缺少一个参数而无法正常调用:

 >>> power(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: power() missing 1 required positional argument: 'n'
 

Python的错误信息很明确:调用函数 power() 缺少了一个位置参数 n 。

这个时候,默认参数就排上用场了。由于我们经常计算x 2 ,所以,完全可以把第二个参数n的默认值设定为2:

 def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
 

这样,当我们调用 power(5) 时,相当于调用 power(5, 2) :

 >>> power(5)
25
>>> power(5, 2)
25
 

而对于 n > 2 的其他情况,就必须明确地传入n,比如 power(5, 3) 。

从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

使用默认参数有什么好处?最大的好处是能降低调用函数的难度。

举个例子,我们写个一年级小学生注册的函数,需要传入 name 和 gender 两个参数:

 def enroll(name, gender):
    print('name:', name)
    print('gender:', gender)
 

这样,调用 enroll() 函数只需要传入两个参数:

 >>> enroll('Sarah', 'F')
name: Sarah
gender: F
 

如果要继续传入年龄、城市等信息怎么办?这样会使得调用函数的复杂度大大增加。

我们可以把年龄和城市设为默认参数:

 def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city)
 

这样,大多数学生注册时不需要提供年龄和城市,只提供必须的两个参数:

 >>> enroll('Sarah', 'F')
name: Sarah
gender: F
age: 6
city: Beijing
 

只有与默认参数不符的学生才需要提供额外的信息:

 enroll('Bob', 'M', 7)
enroll('Adam', 'M', city='Tianjin')
 

可见,默认参数降低了函数调用的难度,而一旦需要更复杂的调用时,又可以传递更多的参数来实现。无论是简单调用还是复杂调用,函数只需要定义一个。

有多个默认参数时,调用的时候,既可以按顺序提供默认参数,比如调用 enroll('Bob', 'M', 7) ,意思是,除了 name , gender 这两个参数外,最后1个参数应用在参数 age 上, city 参数由于没有提供,仍然使用默认值。

也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。比如调用 enroll('Adam', 'M', city='Tianjin') ,意思是, city 参数用传进去的值,其他默认参数继续使用默认值。

默认参数很有用,但使用不当,也会掉坑里。默认参数有个最大的坑,演示如下:

先定义一个函数,传入一个list,添加一个 END 再返回:

 def add_end(L=[]):
    L.append('END')
    return L
 

当你正常调用时,结果似乎不错:

 >>> add_end([1, 2, 3])
[1, 2, 3, 'END']
>>> add_end(['x', 'y', 'z'])
['x', 'y', 'z', 'END']
 

当你使用默认参数调用时,一开始结果也是对的:

 >>> add_end()
['END']
 

但是,再次调用 add_end() 时,结果就不对了:

 >>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']
 

很多初学者很疑惑,默认参数是 [] ,但是函数似乎每次都“记住了”上次添加了 'END' 后的list。

原因解释如下:

Python函数在定义的时候,默认参数 L 的值就被计算出来了,即 [] ,因为默认参数 L 也是一个变量,它指向对象 [] ,每次调用该函数,如果改变了 L 的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的 [] 了。

 定义默认参数要牢记一点:默认参数必须指向不变对象!
 

要修改上面的例子,我们可以用 None 这个不变对象来实现:

 def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L
 

现在,无论调用多少次,都不会有问题:

 >>> add_end()
['END']
>>> add_end()
['END']
 

为什么要设计 str 、 None 这样的不变对象呢?因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

我们以数学题为例子,给定一组数字a,b,c……,请计算a 2 + b 2 + c 2 + ……。

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:

 def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
 

但是调用的时候,需要先组装出一个list或tuple:

 >>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84
 

如果利用可变参数,调用函数的方式可以简化成这样:

 >>> calc(1, 2, 3)
14
>>> calc(1, 3, 5, 7)
84
 

所以,我们把函数的参数改为可变参数:

 def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
 

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个 * 号。在函数内部,参数 numbers 接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

 >>> calc(1, 2)
5
>>> calc()
0
 

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

 >>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
14
 

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个 * 号,把list或tuple的元素变成可变参数传进去:

 >>> nums = [1, 2, 3]
>>> calc(*nums)
14
 

*nums 表示把 nums 这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。

关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:

 def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
 

函数 person 除了必选参数 name 和 age 外,还接受关键字参数 kw 。在调用该函数时,可以只传入必选参数:

 >>> person('Michael', 30)
name: Michael age: 30 other: {}
 

也可以传入任意个数的关键字参数:

 >>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
 

关键字参数有什么用?它可以扩展函数的功能。比如,在 person 函数里,我们保证能接收到 name 和 age 这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去:

 >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, city=extra['city'], job=extra['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
 

当然,上面复杂的调用可以用简化的写法:

 >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
 

**extra 表示把 extra 这个dict的所有key-value用关键字参数传入到函数的 **kw 参数, kw 将获得一个dict,注意 kw 获得的dict是 extra 的一份拷贝,对 kw 的改动不会影响到函数外的 extra 。

命名关键字参数

对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些,就需要在函数内部通过 kw 检查。

仍以 person() 函数为例,我们希望检查是否有 city 和 job 参数:

 def person(name, age, **kw):
    if 'city' in kw:
        # 有city参数
        pass
    if 'job' in kw:
        # 有job参数
        pass
    print('name:', name, 'age:', age, 'other:', kw)
 

但是调用者仍可以传入不受限制的关键字参数:

 >>> person('Jack', 24, city='Beijing', addr='Chaoyang', zipcode=123456)
 

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收 city 和 job 作为关键字参数。这种方式定义的函数如下:

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

和关键字参数 **kw 不同,命名关键字参数需要一个特殊分隔符 * , * 后面的参数被视为命名关键字参数。

调用方式如下:

 >>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
 

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

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

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:

 >>> person('Jack', 24, 'Beijing', 'Engineer')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'
 

由于调用时缺少参数名 city 和 job ,Python解释器把前两个参数视为位置参数,后两个参数传给 *args ,但缺少命名关键字参数导致报错。

命名关键字参数可以有缺省值,从而简化调用:

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

由于命名关键字参数 city 具有默认值,调用时,可不传入 city 参数:

 >>> person('Jack', 24, job='Engineer')
Jack 24 Beijing Engineer
 

使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个 * 作为特殊分隔符。如果缺少 * ,Python解释器将无法识别位置参数和命名关键字参数:

 def person(name, age, city, job):
    # 缺少 *,city和job被视为位置参数
    pass
 

参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

比如定义一个函数,包含上述若干种参数:

 def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
 

在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

 >>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> f1(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> f1(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
 

最神奇的是通过一个tuple和dict,你也可以调用上述函数:

 >>> args = (1, 2, 3, 4)
>>> kw = {'d': 99, 'x': '#'}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {'d': 88, 'x': '#'}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {'x': '#'}
 

所以,对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它,无论它的参数是如何定义的。

 虽然可以组合多达5种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。
 

练习

以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:

 # -*- coding: utf-8 -*-
----
def mul(x, y):
    return x * y
----
# 测试
print('mul(5) =', mul(5))
print('mul(5, 6) =', mul(5, 6))
print('mul(5, 6, 7) =', mul(5, 6, 7))
print('mul(5, 6, 7, 9) =', mul(5, 6, 7, 9))
if mul(5) != 5:
    print('测试失败!')
elif mul(5, 6) != 30:
    print('测试失败!')
elif mul(5, 6, 7) != 210:
    print('测试失败!')
elif mul(5, 6, 7, 9) != 1890:
    print('测试失败!')
else:
    try:
        mul()
        print('测试失败!')
    except TypeError:
        print('测试成功!')
 

小结

Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

要注意定义可变参数和关键字参数的语法:

*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的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符 * ,否则定义的将是位置参数。

参考源码

var_args.py

kw_args.py

查看更多关于函数的参数的详细内容...

  阅读:48次

上一篇

下一篇

第1节:select里动态添加option    第2节:JS/JQuery获取当前元素的上一个/下一个兄弟级元素等元素的方法    第3节:在js中怎样获得checkbox里选中的多个值?(jQuery)    第4节:子节点修改父节点样式(原生js和jquery)    第5节:JS与jQuery给元素添加样式的方法    第6节:利用jquery库来设计设置滚动条个性化样式    第7节:JQuery的jCarousellite插件打造超炫左右滚动效果    第8节:jQuery.Validate常用的一些验证规则    第9节:jquery实现密码强度验证    第10节:jQuery kinMaxShow焦点图代码适用于全屏    第11节:JQuery.slideBox图片滚动焦点图    第12节:jquery页面引导提示用户操作    第13节:jQuery全屏滚动插件fullPage.js    第14节:jquery fullPage.js制作搜狐快站页面效果    第15节:jQuery hover事件    第16节:jQuery页面侧边固定悬浮导航代码(带关闭按钮)    第17节:jQuery中 trigger() & bind() 使用    第18节:Jquery学习笔记:typeof的使用    第19节:HDHCMS收集整理通过JQUERY实现输字符入过滤Select选项    第20节:jquery 多个元素绑定同时绑定多个事件    第21节:Jquery脚本获取兄弟节点,父节点,子节点    第22节:基于formdata属性php+ajax+h5实现图片上传功能    第23节:php+mysql+jquery实现简易的检索自动补全提示功能    第24节:php使用gzip压缩传输js和css文件    第25节:如何利用PHP生成二维码    第26节:PHP加jQuery实现找回密码    第27节:php ajax 留言板 - 综合实例    第28节:php jquery ajax用户登录实例代码 - 综合实例    第29节:php+jquery ajax邮箱地址无刷新验证实例 - 综合实例    第30节:php+ajax实现无刷新的新闻留言系统 - 综合实例    第31节:MySQLSchema设计(四)一个MySQL里的JQuery:common_sc    第32节:Dedecms实现tags云标签随机颜色与字体大小方法总结    第33节:thinkphp 中的volist标签在ajax操作中的特殊性    第34节:ThinkPHP中使用ajax - Thinkphp    第35节:jquery autocomplete和thinkphp开发 - Thinkphp    第36节:Dwz+thinkphp整合下的数据导出到Excel - Thinkphp    第37节:thinkPHP实现瀑布流 - Thinkphp    第38节:PHP/Javascript/CSS/jQuery常用知识大全详细整理(原创    第39节:jquery 无刷新评论    第40节:php文件管理,可以点击按照时间,大小,名称排    第41节:推荐:PHP+jQuery+Ajax多图片上传的实例    第42节:Jquery AjaxUpload实现文件上传功能代码实例教程_自    第43节:WordPress侧边栏关闭/显示设置方法 - WordPress    第44节:WordPress利用jquery实现动态下拉菜单 - WordPress    第45节:WordPress中Ajax评论分页实现方法 - WordPress    第46节:jQuery实现WordPress读者墙、排行榜图片放大效果    第47节:WordPress增加返回顶部效果代码 - WordPress    第48节:Wordpress中将选中内容分享到新浪腾讯微博 - Word    第49节:WordPress 调用 jQuery一些方法小结 - WordPress    第50节:wordpress后台加载ajax.googleapis.com导致打开速度很慢    第51节:WordPress文章图片自动添加原图url链接 - WordPress    第52节:wordpress中调用自带juqery库的方法与注意事项 - W    第53节:常用的JQuery数字类型验证正则表达式整理_正则表    第54节:jQuery中的正则表达式分析 正则基础_正则表达式    第55节:XSS with $(location.hash) - 网站安全 - 自学php    第56节:随缘网络留言板v2(带审核置顶功能+ajax+jquery构架    第57节:grails的安全策略 - 网站安全 - 自学php    第58节:PHPWind flash xss 0day [2] - 网站安全 - 自学php    第59节:jQuery(<=1.6.2) DOMXSS 分析 - 网站安全 - 自学php    第60节:乐视MySQL盲注、callback反射型XSS及一处绝对路径泄    第61节:Paypal的一个Dom型XSS漏洞分析 - 网站安全 - 自学p    第62节:PHPCMS V9文章内容页点击量如何调用_phpcms_CMS教程    第63节:Asp.net基于ajax和jquery-ui实现进度条    第64节:Win7中打开chm文件内容无法显示问题 - Windows操作系    第65节:js代码另类劫持登录表单 - Windows操作系统 - 自学    第66节:jQuery实现简单的轮播图效果    第67节:jquery基础知识    第68节:jquery插件lazyload简单使用教程    第69节:videojs中文文档详解    第70节:video实现浏览器打开自动播放    第71节:Jquery中的$.cookie()方法    第72节:jQuery.fn和jQuery.prototype区别介绍    第73节:浅谈JQUERY的each方法    第74节:基于jQuery实现列表循环滚动小技巧(超简单)    第75节:jquery标签选择器应用示例详解    第76节:关于img的onload事件兼容ie下的bug问题    第77节:手把手教大家编写Jquery日历插件制作    第78节:Jquery使用小技巧汇总    第79节:jquery实现的3D旋转木马特效代码分享    第80节:jquery实现在网页指定区域显示自定义右键菜单效果    第81节:jquery分页实现原理详解    第82节:JavaScript如何调试有哪些建议和技巧附五款有用的调试工具    第83节:jquery如何判断当前浏览器的实现代码    第84节:jQuery插件开发精品教程(让你的jQuery更上一个台阶)【转】    第85节:我们谈一谈jQuery核心架构设计    第86节:jquery使用小技巧    第87节:解决IE中img.onload失效的方法    第88节:jQuery封装一个动态加载js和css插件    第89节:js图片等比例缩放    第90节:生成二维码的 jQuery 插件:jquery.qrcode.js    第91节:Jquery操作textarea,input,select,checkbox详解    第92节:带来一款JQUERY动画库tween.js可生成平滑动画    第93节:jquery图片滚动放大代码分享    第94节:jQuery处理XML数据解析方法详解    第95节:jquery方法之remove()方法详解    第96节:jquery实现滑动特效代码slide...方法详解    第97节:jquery右下角旋转环状菜单特效代码详解    第98节:jquery实现点击展开列表同时隐藏其他列表方法    第99节:jquery实现文件上传进度条特效    第100节:jquery+css3实现网页背景花瓣随机飘落特效    第101节:jquery实现动静态条形统计图    第102节:jquery地图map悬停显示省市详解    第103节:jquery Easyui快速开发详解    第104节:jquery+ajax请求且带返回值的代码    第105节:SyntaxHighlighter自动换行彻底解决办法    第106节:jquery如何实现点击滑动小图放效果    第107节:jQuery实现html元素拖拽    第108节:jqueryCtrl+Enter提交表单的方法    第109节:jquery实现列表内容的动态载入特效    第110节:PHP结合jQuery如何实现投票功能    第111节:推荐一个jquery统计图效果网站    第112节:简单的jquery入门指引讲解    第113节:jquery append 动态添加的元素事件on 不起作用的解决方案    第114节:PHP接受文件并获得其后缀名的方法    第115节:jquery实现选中单选按钮下拉伸缩效果    第116节:jquery实现点击查看更多内容控制段落文字展开折叠效果    第117节:jquery星星评分效果实现方法    第118节:jquery实现页面虚拟键盘教程    第119节:[转载]jquery实现的div窗口震动效果实例    第120节:jquery弹窗层效果讲解    第121节:jquery 判断图片是否加载完成方法汇总    第122节:jQuery uploadify在非IE核心浏览器下无法上传    第123节:jquery如何继承主类自定义方法    第124节:jquery如何获取网页URL    第125节:jquery的bind方法详解    第126节:jQuery如何实现平滑滚动页面到指定锚点链接的方法    第127节:jquery验证密码强度    第128节:js的json字符串转换为对象    第129节:JQuery中如何阻止表单的提交动作    第130节:如何使用Jquery获取Form表单中被选中的radio值    第131节:jquery.map()方法的使用详解    第132节:jquery 获取页面源码    第133节:jQuery实现鼠标点击弹出渐变层的方法    第134节:jQuery中$this和$(this)的区别介绍    第135节:jquery操作复选框(checkbox)大全    第136节:jquery如何实现图片上传预览    第137节:jQuery怎么检测返回值的数据类型    第138节:jQuery最常用的方法集    第139节:jquery.fn.extend与jquery.extend区别    第140节:jQuery中extend函数详解    第141节:jQuery实现文字滚动marquee标签效果    第142节:jquery模拟select下拉效果    第143节:jQuery的end()详解    第144节:jquery的$(document)和$(window)的区别    第145节:jQuery插件boxScroll实现图片轮播特效    第146节:JQUERY获取当前页面的URL信息    第147节:jQuery实现Twitter的自动文字补齐特效_jquery_自学p    第148节:分享一个Jquery实现中国地图插件    第149节:jQuery插件原来如此简单 jQuery插件的机制及实战    第150节:jquery弹出层插件下载_jquery图片弹出    第151节:jquery ajax get success not called; ajax调用返回200,但是    第152节:区别jQuery中height与width    第153节:jQuery插件的开发包括两种方式    第154节:推荐25个超炫的jQuery网格插件_jquery    第155节:jquery+php实现搜索框自动提示_jquery    第156节:jQuery操作cookie方法实例教程_jquery    第157节:基于jQuery实现文本框缩放以及上下移动功能_jqu    第158节:jQuery实现统计复选框选中数量_jquery    第159节:jQuery实现隔行背景色变色_jquery    第160节:使表格的标题列可左右拉伸jquery插件封装_jquery    第161节:jQuery事件绑定和委托实例_jquery    第162节:jquery中push()的用法(数组添加元素)_jquery    第163节:jquery提示效果实例分析_jquery    第164节:浅谈jQuery中对象遍历.eq().first().last().slice()方法    第165节:jquery操作对象数组元素方法详解_jquery    第166节:jquery选择器需要注意的问题_jquery    第167节:jQuery的ready方法详解_jquery    第168节:jQuery实现多按钮单击变色_jquery    第169节:jquery 操作css样式、位置、尺寸方法汇总_jquery_自    第170节:Jquery焦点图实例代码_jquery    第171节:基于jQuery实现复选框的全选 全不选 反选功能_j    第172节:理解jQuery stop()方法_jquery    第173节:jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解_j    第174节:jQuery验证插件 Validate详解_jquery    第175节:jQuery提示效果代码分享_jquery    第176节:jQuery 中$(this).index与$.each的使用指南_jquery_自学    第177节:Jquery对象和Dom对象的区别分析_jquery    第178节:常见的jQuery选择器汇总_jquery    第179节:jQuery选择器全集详解_jquery    第180节:jQuery简单实现网页选项卡特效_jquery    第181节:基于jQuery实现下拉框_jquery    第182节:浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用_jquer    第183节:基于jQuery实现表单提交验证_jquery    第184节:如何在MVC应用程序中使用Jquery_jquery    第185节:jQuery Ajax()方法使用指南_jquery    第186节:jQuery带箭头提示框tooltips插件集锦_jquery    第187节:jQuery Masonry瀑布流插件使用详解_jquery    第188节:超棒的响应式布局jQuery插件Freetile.js_jquery_自学    第189节:Jquery实现仿腾讯微博发表广播_jquery    第190节:jquery 实现返回顶部功能_jquery    第191节:jquery ui bootstrap 实现自定义风格_jquery    第192节:z-blog SyntaxHighlighter 长代码无法换行解决办法(jq    第193节:jQuery $命名冲突解决方案汇总_jquery    第194节:详谈jQuery中的this和$(this)_jquery    第195节:JQuery表单验证插件EasyValidator用法分析_jquery_自学    第196节:jquery中append()与appendto()用法分析_jquery    第197节:jQuery 插件开发指南_jquery    第198节:jquery checkbox 勾选的bug问题解决方案与分析_jquer    第199节:完美兼容各大浏览器的jQuery仿新浪图文淡入淡出    第200节:jQuery的deferred对象详解_jquery    第201节:推荐8款jQuery轻量级树形Tree插件_jquery    第202节:推荐10个2014年最佳的jQuery视频插件_jquery_自学ph    第203节:浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异_jqu    第204节:超炫的jquery仿flash导航栏特效_jquery    第205节:jQuery 动态云标签插件_jquery    第206节:jquery插件推荐浏览器嗅探userAgent_jquery    第207节:jquery插件推荐 jquery.cookie_jquery    第208节:JSON格式化输出_jquery    第209节:前端必备神器 Snap.svg 弹动效果_jquery    第210节:jQuery函数map()和each()介绍及异同点分析_jquery_自学    第211节:jquery的总体架构分析及实现示例详解_jquery_自学    第212节:jquery常用方法及使用示例汇总_jquery    第213节:JQuery遍历json数组的3种方法_jquery    第214节:jQuery修改li下的样式以及li下的img的src的值的方法    第215节:一款基jquery超炫的动画导航菜单可响应单击事件    第216节:加载列表时jquery获取ul中第一个li的属性_jquery_自    第217节:jQuery中ajax和post处理json的不同示例对比_jquery_自学    第218节:详解jquery中$.ajax方法提交表单_jquery    第219节:jQuery遍历对象、数组、集合实例_jquery    第220节:JQuery中使用.each()遍历元素学习笔记_jquery_自学p    第221节:jquery处理json对象_jquery    第222节:jQuery遍历之next()、nextAll()方法使用实例_jquery_自学    第223节:使用JQ来编写最基本的淡入淡出效果附演示动画    第224节:jQuery中parents()和parent()的区别分析_jquery    第225节:鼠标悬浮显示二级菜单效果的jquery实现_jquery_自学    第226节:JQuery 实现在同一页面锚点链接之间的平滑滚动    第227节:jquery 获取 outerHtml 包含当前节点本身的代码_jqu    第228节:jQuery获取对象简单实现方法小结_jquery    第229节:Jquery修改页面标题title其它JS失效的解决方法_jq    第230节:jQuery ajax serialize() 方法使用示例_jquery    第231节:基于jquery固定于顶部的导航响应浏览器滚动条事    第232节:用jquery模仿的a的title属性的例子_jquery    第233节:jQuery实现响应浏览器缩放大小并改变背景颜色_    第234节:深入分析JQuery和JavaScript的异同_jquery    第235节:运用jQuery定时器的原理实现banner图片切换_jquery    第236节:用简洁的jQuery方法toggleClass实现隔行换色_jquery_自    第237节:jQuery实现的导航条切换可显示隐藏_jquery_自学ph    第238节:jquery实现导航固定顶部的效果仿蘑菇街_jquery_自学    第239节:jquery中页面Ajax方法$.load的功能使用介绍_jquery_自    第240节:JQuery的Ajax中Post方法传递中文出现乱码的解决方法    第241节:jquery中post方法用法实例_jquery    第242节:用Jquery.load载入页面后样式没了页面混乱的解决方    第243节:利用jquery操作Radio方法小结_jquery    第244节:jquery获取radio值实例_jquery    第245节:JQuery判断radio是否选中并获取选中值的示例代码    第246节:jQuery实现点击该行即可删除HTML表格行_jquery_自学    第247节:iframe里面的元素触发父窗口元素事件的jquery代码    第248节:Jquery解析Json格式数据过程代码_jquery    第249节:ie8模式下click无反应点击option无反应的解决方法    第250节:jquery动态加载js/css文件方法(自写小函数)_jquery_自    第251节:jquery实现多行文字图片滚动效果示例代码_jquery    第252节:jQuery获取iframe的document对象的方法_jquery    第253节:Jquery $.getJSON 在IE下的缓存问题解决方法_jquery_自    第254节:打造个性化的功能强大的Jquery虚拟键盘(VirtualKe    第255节:JQuery 使用attr方法实现下拉列表选中_jquery_自学    第256节:jquery幻灯片插件bxslider样式改进实例_jquery_自学    第257节:jquery引用方法时传递参数原理分析_jquery_自学ph    第258节:兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码    第259节:jQuery 实现自动填充邮箱功能(带下拉提示)_jq    第260节:两种方法基于jQuery实现IE浏览器兼容placeholder效果    第261节:分享20款美化网站的 jQuery Lightbox 灯箱插件_jquer    第262节:Json实现异步请求提交评论无需跳转其他页面_jq    第263节:jQuery固定浮动侧边栏实现思路及代码_jquery_自学    第264节:jQuery对val和atrr("value")赋值的区别介绍_jquery_自学    第265节:jquery和js实现对div的隐藏和显示方法_jquery_自学    第266节:javascript 自定义回调函数示例代码_jquery    第267节:jQuery判断当前点击的是第几个li的代码_jquery_自学    第268节:一个jquery实现的不错的多行文字图片滚动效果_    第269节:Javascript中封装window.open解决不兼容问题_jquery_自学    第270节:使用jQuery将多条数据插入模态框的实现代码_jqu    第271节:使用jQuery.wechat构建微信WEB应用_jquery    第272节:分享一款基于jQuery的视频播放插件_jquery_自学ph    第273节:jquery uploadify 在FF下无效的解决办法_jquery_自学p    第274节:jquery中使用循环下拉菜单示例代码_jquery_自学ph    第275节:Jquery设置attr的disabled属性控制某行显示或者隐藏    第276节:javascript trim函数在IE下不能用的解决方法_jquery_自    第277节:一款由jquery实现的整屏切换特效_jquery    第278节:jquery实现类似淘宝星星评分功能有截图_jquery_自学    第279节:jQuery移除tr无效的解决方法(tr是动态添加)_jquery    第280节:基于jquery的文字向上跑动类似跑马灯的效果_jqu    第281节:常用的jquery模板插件——jQuery Boilerplate介绍_jqu    第282节:jquery实现一个简单好用的弹出框_jquery    第283节:jQuery将多条数据插入模态框的示例代码_jquery_自学    第284节:jQuery如何获取同一个类标签的所有值(默认无法获    第285节:$("").click与onclick的区别示例介绍_jquery    第286节:jquery 实现两Select 标签项互调示例代码_jquery_自学    第287节:jquery获得同源iframe内body下标签的值的方法_jquer    第288节:jquery得到iframe src属性值的方法_jquery    第289节:jquery动态分页效果堪比时光网_jquery    第290节:JQuery拖动表头边框线调整表格列宽效果代码_jqu    第291节:使用JQuery库提供的扩展功能实现自定义方法_jqu    第292节:三种取消选中单选框radio的方法_jquery    第293节:jQuery 浮动导航菜单适合购物商品类型的网站_jq    第294节:jQuery CSS()方法改变现有的CSS样式表_jquery_自学ph    第295节:jquery取子节点及当前节点属性值的方法_jquery_自学    第296节:jQuery通过点击行来删除HTML表格行的实现示例_jq    第297节:JQuery 给元素绑定click事件多次执行的解决方法_    第298节:在css加载完毕后自动判断页面是否加入css或js文件    第299节:使用js dom和jquery分别实现简单增删改_jquery_自学    第300节:jQuery 复合选择器应用的几个例子_jquery    第301节:无限树Jquery插件zTree的常用功能特性总结_jquery_自    第302节:jquery实现类似淘宝星星评分功能实例_jquery_自学    第303节:JQuery实现当鼠标停留在某区域3秒后自动执行_jq    第304节:使用jquery解析XML示例代码_jquery    第305节:jquery学习总结(超级详细)_jquery    第306节:jquery.idTabs 选项卡使用示例代码_jquery    第307节:jQuery之Deferred对象详解_jquery    第308节:jQuery动态创建html元素的常用方法汇总_jquery_自学    第309节:jQuery中index()的用法分析_jquery    第310节:jQuery表格插件datatables用法总结_jquery    第311节:jquery向上向下取整适合分页查询_jquery    第312节:jquery用offset()方法获得元素的xy坐标_jquery_自学p    第313节:jquery实现html页面 div 假分页有原理有代码_jquery    第314节:jquery mobile页面跳转后样式丢失js失效的解决方法    第315节:10分钟学会写Jquery插件实例教程_jquery    第316节:一个实用的图片切换支持点击切换和自动轮播_    第317节:jQuery 1.9移除了$.browser可以使用$.support来替代_jq    第318节:jQuery源码分析之jQuery中的循环技巧详解_jquery_自学    第319节:使用jquery实现放大镜效果_jquery    第320节:Enter回车切换输入焦点实现思路与代码兼容各大浏    第321节:jQuery淡入淡出元素让其效果更为生动_jquery_自学    第322节:jquery和css3实现的炫酷时尚的菜单导航_jquery_自学    第323节:jQuery级联操作绑定事件实例_jquery    第324节:Iframe实现跨浏览器自适应高度解决方法_jquery_自学    第325节:js/jquery判断浏览器的方法小结_jquery    第326节:解决jquery版本冲突的有效方法_jquery    第327节:事件委托与阻止冒泡阻止其父元素事件触发_jqu    第328节:jquery实现个人中心导航菜单效果和美观都非常不    第329节:jquery制作select列表双向选择示例代码_jquery_自学    第330节:jQuery表格列宽可拖拽改变且兼容firfox_jquery_自学    第331节:jQuery实现倒计时按钮功能代码分享_jquery_自学ph    第332节:jquery delay()介绍及使用指南_jquery    第333节:jQuery自带的一些常用方法总结_jquery    第334节:浅析JQuery中的html(),text(),val()区别_jquery    第335节:用jquery实现动画跳到顶部和底部(这个比较简单    第336节:JQuery $.each遍历JavaScript数组对象实例_jquery_自学    第337节:Jquery实现兼容各大浏览器的Enter回车切换输入焦点    第338节:自编jQuery插件实现模拟alert和confirm_jquery_自学ph    第339节:使用jquery.validate自定义方法实现"手机号码或者固    第340节:jquery ajax请求方式与提示用户正在处理请稍等_j    第341节:一个简单的动态加载js和css的jquery代码_jquery_自学    第342节:JQuery中的html()、text()、val()区别示例介绍_jquery_自    第343节:JQuery表格拖动调整列宽效果(自己动手写的)_jque    第344节:影响jQuery使用的14个方面_jquery    第345节:分享一个自己动手写的jQuery分页插件_jquery_自学    第346节:超级好用的jQuery圆角插件 Corner速成_jquery_自学p    第347节:jquery 取子节点及当前节点属性值的方法_jquery_自    第348节:一个支持任意尺寸的图片上下左右滑动效果_jqu    第349节:在JavaScript中重写jQuery对象的方法实例教程_jquer    第350节:jQuery中的read和JavaScript中的onload函数的区别_jque    第351节:jQuery焦点图切换简易插件制作过程全纪录_jquery    第352节:jQuery标签替换函数replaceWith()的使用例子_jquery_自    第353节:原生javascript实现的分页插件pagenav_jquery    第354节:jQuery实现异步获取json数据的2种方式_jquery_自学    第355节:jQuery实用函数用法总结_jquery    第356节:jQuery动画特效实例教程_jquery    第357节:jQuery事件用法实例汇总_jquery    第358节:Html5的placeholder属性(IE兼容)实现代码_jquery_自学    第359节:jQuery针对各类元素操作基础教程_jquery    第360节:jQuery异步加载数据并添加事件示例_jquery_自学ph    第361节:Jquery通过JSON字符串创建JSON对象_jquery    第362节:Jquery中扩展方法extend使用技巧_jquery    第363节:jquery使用$(element).is()来判断获取的tagName_jquery_自    第364节:jQuery响应鼠标事件并隐藏与显示input默认值_jque    第365节:字段太多jquey快速清空表单内容方法_jquery_自学    第366节:用jquery修复在iframe下的页面锚点失效问题_jquery    第367节:JQuery实现动态表格点击按钮表格增加一行_jquery    第368节:Jquery仿IGoogle实现可拖动窗口示例代码_jquery_自学    第369节:jQuery实现列表自动滚动循环滚动展示新闻_jquery    第370节:jquery操作HTML5 的data-*的用法实例分享_jquery_自学    第371节:JQuery Tips相关(1)----关于$.Ready()_jquery    第372节:JQuery EasyUI 加载两次url的原因分析及解决方案_j    第373节:jquery中$(#form :input)与$(#form input)的区别_jquery_自学    第374节:JQuery中使用Ajax赋值给全局变量失败异常的解决方    第375节:通过jquery 获取URL参数并进行转码_jquery    第376节:jQuery实现返回顶部功能适合不支持js的浏览器_j    第377节:推荐10款最热门jQuery UI框架[原创]_jquery    第378节:jQuery CSS()方法改变现有的CSS样式_jquery    第379节:jQuery添加/改变/移除CSS类及判断是否已经存在CS    第380节:使用jQuery设置disabled属性与移除disabled属性_jquer    第381节:简单的jquery左侧导航栏和页面选中效果_jquery_自学    第382节:jquery实现的下拉和收缩效果示例_jquery    第383节:jQuery截取指定长度字符串代码_jquery    第384节:jQuery控制TR显示隐藏的三种常用方法_jquery_自学    第385节:jQuery .tmpl() 用法示例介绍_jquery    第386节:jquery实现在页面加载的时自动为日期插件添加当    第387节:jQuery根据ID获取input、checkbox、radio、select的示例    第388节:jQuery实现的一个tab切换效果内部还嵌有切换_jqu    第389节:用Jquery选择器计算table中的某一列某一行的合计    第390节:jQuery实现的一个自定义Placeholder属性插件_jquery_自    第391节:jquery判断浏览器后退时候弹出消息的方法_jquery    第392节:jQuery判断checkbox是否选中的3种方法_jquery_自学ph    第393节:jquery访问ashx文件示例代码_jquery    第394节:jQuery的animate函数学习记录_jquery    第395节:jQuery中get和post方法传值测试及注意事项_jquery_自    第396节:使用jquery.qrcode生成彩色二维码实例_jquery_自学p    第397节:jquery datatable后台封装数据示例代码_jquery_自学p    第398节:jQuery ajax中文API及教程资料大全    第399节:jquery对象和javascript对象即DOM对象相互转换_jquer    第400节:jquery bind(click)传参让列表中每行绑定一个事件_    第401节:jQuery html()方法使用不了无法显示内容的问题_jq    第402节:JQuery设置获取下拉菜单某个选项的值(比较全)_j    第403节:jquery中each遍历对象和数组示例_jquery    第404节:jQuery-强大的jQuery选择器 (详解)[转]    第405节:Asp.net MVC 中利用jquery datatables 实现数据分页显示功能    第406节:ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据    第407节:jQuery+Asp.Net实现省市二级联动功能的方法    第408节:详解JQuery Ajax 在asp.net中使用总结    第409节:jQuery实现金额录入框    第410节:.net jquery绘制自定义表单源码分享    第411节:Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件    第412节:利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表    第413节:ASP.NET MVC中使用jQuery时的浏览器缓存问题详解    第414节:ASP.NET配合jQuery解决跨域调用的问题    第415节:ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意    第416节:asp.net+Ligerui实现grid导出Excel和Word的方法    第417节:利用ASP.NET MVC+EasyUI+SqlServer搭建企业开发框架    第418节:ASP.NET中JQuery+AJAX调用后台    第419节:asp.net实现调用带有输出参数的存储过程实例    第420节:asp.net+js实现批量编码与解码的方法    第421节:Sencha Touch和jQuery Mobile该如何选择?    第422节:前端开发框架选型清单    第423节:为什么服务端获取不到路由哈希部分如vue的#号后面参数    第424节:三谈Iframe自适应高度代码_心得技巧_网页制作    第425节:深入学习.net验证码生成及使用方法    第426节:.net生成验证码    第427节:Asp.Mvc 2.0用户客户端验证实例讲解(3)    第428节:asp.net中js+jquery添加下拉框值和后台获取示例    第429节:jquery提交表单mvc3后台处理示例    第430节:jQuery实现倒计时跳转的例子    第431节:asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码    第432节:asp.net使用jquery模板引擎jtemplates呈现表格    第433节:asp.net使用jQuery获取RadioButtonList成员选中内容和值示例    第434节:asp.net使用jquery实现搜索框默认提示功能    第435节:asp.net使用jQuery Uploadify上传附件示例    第436节:ASP.NET中使用Ajax的方法    第437节:.net mvc页面UI之Jquery博客日历控件实现代码    第438节:UpdatePanel和jQuery不兼容 局部刷新jquery失效    第439节:模拟QQ心情图片上传预览示例    第440节:asp.net+jquery ajax无刷新登录的实现方法    第441节:asp.net中js和jquery调用ashx的不同方法分享    第442节:ajax.net +jquery 无刷新三级联动的实例代码    第443节:asp.net利用Ajax和Jquery在前台向后台传参数并返回值的实例    第444节:基于asp.net下使用jquery实现ajax的解决方法    第445节:浅谈对Jquery+JSON+WebService的使用小结    第446节:PHP Ajax上传文件实例,ajaxfileupload.js - php上传下载    第447节:PHP+Ajax实现文件无刷新上传文件代码 - php上传下载    第448节:PHP判断file框是否已选择文件(支持多文件) - php上    第449节:PHP jQuery ajax无刷新文件下载次数统计 - php上传下    第450节:jquery+php实现导出datatables插件数据到excel的方法    第451节:php+jquery实现无限级目录遍历展示代码    第452节:php 判断是否为ajax请求 - php高级应用    第453节:php ajax.$post实现攒,顶,踩的功能 - php高级应用    第454节:php 实现jquery+ajax 跨域数据调用实例 - php高级应用    第455节:PHP判断ajax请求类型(HTTP_X_REQUESTED_WITH) - php高级应    第456节:php实现input输入框失去焦点自动保存输入框的数据    第457节:PHP批量修改静态html文件编码的例子 - php高级应用    第458节:jquery php百度搜索框智能提示效果 - php高级应用    第459节:jQuery+Ajax+PHP实现“喜欢”评级功能代码 - php高级    第460节:php实现事件监听与触发实例程序 - php高级应用    第461节:PHP jquery ajax实现即时聊天功能 - php高级应用    第462节:php ajax实时输入自动搜索匹配程序代码 - php高级应    第463节:jQuery教程-jQuery动画    第464节:jQuery教程-编写jQuery插件    第465节:jQuery教程-jQuery中的Ajax操作    第466节:jQuery教程-jQuery简介    第467节:jQuery教程-jQuery基本选择器    第468节:jQuery教程-jQuery过滤选择器    第469节:jQuery教程-jQuery表单选择器    第470节:jQuery教程-jQuery包装集    第471节:jQuery教程-jQuery的实用方法介绍    第472节:jQuery教程-jQuery事件模型    第473节:jQuery教程-jQuery的常用事件    第474节:jQuery教程-jQuery事件处理和事件委派    第475节:如何删除css样式    第476节:Asp.Mvc 2.0用户客户端验证实例讲解(3)    第477节:JQuery为用户控件(ASCX)赋值与接口的应用    第478节:Asp.net+jquery+.ashx文件实现分页思路    第479节:ASP.NET中UpdatePanel与jQuery同时使用所遇问题解决    第480节:ASP.NET MVC使用Ajax的辅助的解决方法    第481节:使用ASP.NET MVC 4 Async Action+jQuery实现消息通知机制的实现代码    第482节:jQuery调用WebService返回JSON数据及参数设置注意问题    第483节:JavaScript用JQuery呼叫Server端方法实现代码与参考语法    第484节:Asp.net利用JQuery AJAX实现无刷新评论思路与代码    第485节:前台JS(jquery ajax)调用后台方法实现无刷新级联菜单示例    第486节:asp.net jquery无刷新分页插件(jquery.pagination.js)    第487节:在ashx文件中使用session的解决思路    第488节:jquery中如何获得服务器控件实现思路    第489节:使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法介绍    第490节:div弹出层的ajax登录(Jquery版+c#)    第491节:ASP.NET中实现jQuery Validation-Engine的Ajax验证实现代码    第492节:ASP.NET中实现jQuery Validation-Engine的Ajax验证    第493节:asp.net+Ajax校验用户是否存在的实现代码    第494节:jquery.pagination +JSON 动态无刷新分页实现代码    第495节:巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码    第496节:使用jQuery Uploader显示文件上传进度    第497节:Asp.Net平台下的图片在线裁剪功能的实现代码(源码打包)    第498节:jQuery 插件autocomplete自动完成应用(自动补全)(asp.net后台)    第499节:排除JQuery通过HttpGet调用WebService返回Json时“parserror”错误    第500节:在jquery repeater中添加设置日期,下拉,复选框等控件