Python Day11

## 字符串比较

```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}只能用在特定函数()内。
    
    
    
    
    


```
原文地址:https://www.cnblogs.com/huhongpeng/p/10778601.html