## 字符串比较 ```python 字符串的比较法则:从左至右每个字符依据ASCII码值进行比较,直至比较出结果,返回结果,结束。 ``` ## 形参与实参 ```python 实参:具有实际意义,有具体类型,在函数调用的时候,由函数()内传入 形参:出现在函数定义的时候。没有具体意义,没有具体类型,在实参赋值给形参后才有意义。 在函数内部参与运算,等同于值拷贝。 ``` ## 实参 ```python 实参分为:位置实参、关键字实参 位置实参:根据位置进行传参,位置先后、个数必须一一对应。 关键字实参:指名道姓进行传参,可以不考虑先后顺序,个数需一致。 位置实参可以用关键字进行传参。但关键字不能用位置传参! 实参可以是:具体整型、字符串等"常量"、变量名、函数对象。 实参组合传参规则:必须先传位置实参,再传关键字实参 ``` ## 形参 ```python 形参:位置形参>默认形参>可变长形参(*args)>关键字实参(默认关键字)>可变长关键字(*kwargs) 位置形参、位置关键字形参必须被传参,无可变长的时候,常用"*"分隔。 可变长形参,多用*args;可变长关键字多用**kwargs。约定俗成。 常出现组合: def f1(*args,**kwargs):pass def f2(a,b=10,**kwargs):pass def f3(a,*args,**kwargs):pass def f4(a,*,x,**kwargs):pass def f5(a,*args,x,**kwargs):pass 使用法则: 所有位置形参全部采用位置实参进行传参 所有关键字形参全部采用关键字实参传参 不管位置、关键字形参,全部按照顺序进行传参 ``` ## 打散机制 ```python 应用场景:具体实参给形参传参的时候。打散机制是对实参而言的 给位置形参进行传参的时候,具体实参多为字符串、列表、元组等单列容器。 给关键字形参进行传参的时候,具体实参只能为字典双列容器。 *变量名:打散单列容器(容器内的值对应的是实参) **变量名:打散双列容器(容器内的k,v对应的是关键字和对应实参) 打散之后无返回值! 例:t=(1,2,3) dic{'a': 100, 'b': 200, 'c': 300} fn(1,2,3,a=100,b=200,c==300) fn(*t,**dic) 字符串也可以被打散: fn(*"abc")=fn("a","b","c") 被打散的一个容器,变为多个值。可以放在列表(字典也行)里面,成 为列表内的多个值t=[*"abcd"],但是不能赋值给列表,因为列表变量 只能对应一个值。元组内不能接受被打散的容器,因为元组为不可变。 它的应用场景:该场景下可以接受可变的多个值。 例:dic={'a': 1, 'b': 2} **{'a': 1, 'b': 2}:打散双列容器,其输出结果为:"a"=1,"b"=2 在fn()括号内,默认输出结果为:a=1,b=2,此时a、b不为字符串。 因为上述原因,在print**{'a': 1, 'b': 2}语句无法实现,报错: "a"、"b"无法为关键字参数,因其为字符串值,不是变量。"a"、"b"改为 a、b的时候,又无法为字典的key值,因其为变量名。 综上**{'a': 1, 'b': 2}只能用在特定函数()内。 ```