# Ternary operators , \*args and \*\*kwargs

Hey guys, welcome back to the Python basics tutorial! Today I'll tell you about ternary operators and args/kwargs.

## Ternary operators

When your assigning a variable based on a condition, you'll use a if/else block. Well, you can fit it into one line too. The structure of a ternary operator in Python is:&#x20;

```python
var = value1 if condition else value 2
```

&#x20;This may decrease readability though. Let's see an example:

```python
if 3 < 2:
    var = 3
else:
    var = 4
# Can be shortened to:
var = 3 if 3 < 2 else 4
```

There's a significant decrease in size *and* readability.

## \*args and \*\*kwargs

So far if you wanted to make an adder, you would specify two parameters. But if the user wanted to add three numbers? In that case, instead of adding a bunch of named arguments, you would use \*args.

Basically, when you want an indefinite amount of arguments, instead of using positional arguments, you use \*args:

```python
def add(*args):
    result = 0
    for num in args:
        result += num
    
    return result
# OR you can do this:
def add(*args):
    return sum(args)
```

Two things to note here, we only use a star with args when declaring it as a parameter, NOT when using it in the function. And, we also see a new function here: `sum`. It just adds all the elements of the iterable (such as a list) that is given to it.

Remember, \*args only takes arguments as positional ones, not named ones.

{% hint style="info" %}
\*args returns a tuple.
{% endhint %}

\*\*kwargs is a bit different. It only takes named arguments. You use it the same way as \*args. However, \*args returns a tuple, while \*\*kwargs returns a dictionary. So, if the user called your function like `login(username='John', password='harrypotter')`, printing \*\*kwargs would show `{'username': 'John', 'password': 'harrypotter'}` and you can access the username with `kwargs['username']`.&#x20;

{% hint style="info" %}
\*args and \*\*kwargs can be called anything (except for a keyword of course) but it  MUST have a star or two starts respectively in front of it.
{% endhint %}

You've almost finished this course, just a few more stuff, and we'll be done.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://memoryerror.gitbook.io/python-basics/ternary-operators-args-and-kwargs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
